首頁  >  問答  >  主體

c++ - 为什么这样写是错误的??

为什么这样写的话,编译器会提示vecsize is not a type

#include <iostream>
#include <vector>
struct A
{
    static const int vecSize = 20;
    static std::vector<double> vec(vecSize);
};

但如果改成这样就没问题

#include <iostream>
#include <vector>
struct A
{
    static const int vecSize = 20;
    static std::vector<double> vec;
};
std::vector<double> A::vec(vecSize);
高洛峰高洛峰2713 天前495

全部回覆(2)我來回復

  • ringa_lee

    ringa_lee2017-04-17 13:52:36

    因為

    std::vector<double> vec(vecSize);
    

    被視做了一個函式簽名,回傳值為std::vector所以解析vecSize時發生錯誤。
    另外,類別裡面的靜態非字面型(non-literal type)成員是需要在類別外初始化的,這個C++規定的。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 13:52:36

    建構 物件型 成員變數vec 的過程要在建構子中,不能在宣告的時候建構。

    回覆
    0
  • 取消回覆