struct中的std :: vector定义

时间:2014-10-29 09:25:26

标签: c++ vector 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);
};

但是Chunks定义中的x被标记为错误,其下方有一条红线。

错误消息是:

  

变量&#34; x&#34;不是类型名称。

为什么会发生此错误,我该如何解决?

2 个答案:

答案 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) {};
};