std ::结构中的向量定义
我定义了一个结构如下。std ::结构中的向量定义
extern int x;
a = 1;
b = 2;
x = a*b;
struct bStruct
{
unsigned long Cycles;
unsigned long Time;
std::vector<unsigned long> Chunks(x);
};
但x
在大块定义被标记为与它下方的红线错误。
的错误信息是:
变量 “x” 是不是一个类型名称。
为什么发生这个错误,我该如何解决?
你的编译器认为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
}
};
感谢您的回答。有用!我对C++非常陌生,所以请耐心等待。我还有一些问题:1为什么在bStruct()中有括号:块?为什么它不是bStruct()。大块? 2为什么std :: vector
这里的最后一行定义了'bStruct'的构造函数,这个构造函数使用'std :: vector
它是一个默认构造函数(不带参数)。在':'后面是一个初始化列表,这意味着'bStruct'变量'Chunks'由std :: vector
std::vector<unsigned long> Chunks(x);
编译器会将块视为函数而不是变量。 在struct(class)的定义中不允许初始化struct成员。 您可以使用建筑功能修复:
struct bStruct
{
unsigned long Cycles;
unsigned long Time;
std::vector<unsigned long> Chunks;
bStruct(int x):Chunks(x) {};
};
谢谢!我对C++非常陌生,所以请耐心等待。我还有一些问题:1什么是bStruct():块意味着什么或它做了什么? 2为什么块的大小是std :: vector
@goosli初始化列表比赋值初始化更有用。 – wangsquirrel 2014-10-30 07:55:43
有了这个字符串'的std ::矢量大块(X);'你要怎么办?将矢量的大小设置为x?如果你使用C++ 98,没有一个int参数的构造函数试试这个'std :: vector Chunks(x,0);'或者你可以在bStruct的构造函数中初始化这个向量。 –
2014-10-29 09:29:43
获取[book](http://*.com/questions/388242/the-definitive-c-book-guide-and-list)。您无法通过*学习C++。 – 2014-10-29 09:55:00
感谢您的有益帮助!我会检查出书。 – goosli 2014-10-29 11:39:37