c++ - 为什么这样写是错误的??
高洛峰
高洛峰 2017-04-17 13:50:36
0
2
538

为什么这样写的话,编译器会提示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);
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(2)
左手右手慢动作

因為

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

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

左手右手慢动作

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板