c ++无法将数据放入向量中

时间:2013-06-20 15:49:12

标签: c++ vector push-back

我有一个数据结构和一个处理器类的数据,数据堆叠没有指针,以加快SIMD处理速度:

struct trajectory_data {
    float position[3];
    float velocity[3];
    float acceleration[3];
    ...
};

class trajectory_processor{
private:
    vector<trajectory_data> tdata;
    vector<trajectory_data> default_data;
    ...
};

但是我实际上没有向矢量添加数据集,这些都不起作用:

trajectory_processor::trajectory_processor(){

    // gives error: no match for ‘operator=’ in ...
    trajectory_data d0();
    default_data[0] = d0;

    // gives error: no matching function for call to
    // ‘std::vector<trajectory_data>::push_back(trajectory_data (&)())
    trajectory_data d1();
    default_data.push_back(d1);
};

根据push_back referenceC++ vector push_back,我认为这应该很简单,但即使经过多次谷歌搜索,我也找不到任何答案。

这个项目涉及到html / javascript中的交叉编码,每当我切换回c ++时,我似乎都会碰到这样的墙,它开始让我神经紧张。

3 个答案:

答案 0 :(得分:8)

你似乎是Most Vexing Parse的受害者。基本上,行

trajectory_data d1();

实际上是声明一个不带参数的函数d1并返回一个trajectory_data对象。

将其更改为

trajectory_data d1;

应解决您的问题,同样适用于d0。无论如何都会调用默认构造函数,不需要()

答案 1 :(得分:1)

试试这个:default_data.push_back(trajectory_data());

答案 2 :(得分:0)

trajectory_data d0();更改为trajectory_data d0;

第一个声明一个函数d0,它不带参数并返回trajectory_data 第二个明确且明确地创建了一个名为trajectory_data的{​​{1}}实例。

这也适用于d0