为什么这样写的话,编译器会提示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);
ringa_lee2017-04-17 13:52:36
因為
std::vector<double> vec(vecSize);
被視做了一個函式簽名,回傳值為std::vector
另外,類別裡面的靜態非字面型(non-literal type)成員是需要在類別外初始化的,這個C++規定的。