我定义了一个结构如下。
extern int x;
a = 1;
b = 2;
x = a*b;
struct bStruct
{
unsigned long Cycles;
unsigned long Time;
std::vector<unsigned long> Chunks(x);
};
但是Chunks定义中的x
被标记为错误,其下方有一条红线。
错误消息是:
变量&#34; x&#34;不是类型名称。
为什么会发生此错误,我该如何解决?
答案 0 :(得分:4)
您的编译器认为Chunks
是一个函数,解析它是这样的:
std::vector<unsigned long> Chunks( x );
| | |
| | +---Wait a sec huh ? what type is 'x' ??
| |
| +---------Function name Chunks
+----------Return Type std::vector<unsigned long>
您希望Chunks
成为数据成员,您需要使用以下内容进行初始化:
struct bStruct
{
unsigned long Cycles;
unsigned long Time;
std::vector<unsigned long> Chunks;
bStruct() : Chunks(x)
{
// Constructor
}
};
答案 1 :(得分:1)
std::vector<unsigned long> Chunks(x);
编译器会将Chunks视为函数而不是变量。
结构成员的初始化将不允许在struct(class)的定义中。
你可以使用构造函数修复它:
struct bStruct
{
unsigned long Cycles;
unsigned long Time;
std::vector<unsigned long> Chunks;
bStruct(int x):Chunks(x) {};
};