为什么这样写的话,编译器会提示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);
因為
被視做了一個函式簽名,回傳值為std::vector所以解析vecSize時發生錯誤。
另外,類別裡面的靜態非字面型(non-literal type)成員是需要在類別外初始化的,這個C++規定的。
建構 物件型 成員變數vec 的過程要在建構子中,不能在宣告的時候建構。