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

为什么这样写的话,编译器会提示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<double>所以解析vecSize时出错。
另外,类里面的静态非字面类型(non-literal type)成员是需要在类外初始化的,这个C++规定的。

いいねを押す +0
左手右手慢动作

构造 对象型 成员变量vec 的过程要在构造函数中,不能在声明的时候构造。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート