Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;can';不要把数据放入向量中_C++_Vector_Push Back - Fatal编程技术网

C++ c++;can';不要把数据放入向量中

C++ c++;can';不要把数据放入向量中,c++,vector,push-back,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<traje

我有一个数据结构和一个数据处理器类,数据堆叠时没有指针,以便更快地进行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;
    ...
};
struct轨迹\u数据{
浮动位置[3];
浮速[3];
浮动加速度[3];
...
};
类处理器{
私人:
矢量数据;
矢量数据;
...
};
但我没有向向量添加数据集,这两种方法都不起作用:

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);
};
轨迹处理器::轨迹处理器(){ //给出错误:中的“运算符=”不匹配。。。 轨迹_数据d0(); 默认_数据[0]=d0; //给出错误:没有用于调用的匹配函数 //'std::vector::push_back(轨迹数据(&)() 轨迹_数据d1(); 默认数据。推回(d1); }; 据我所知,我认为这应该很容易,但即使在几次谷歌搜索之后,我还是找不到任何答案


这个项目涉及到HTML/JavaScript中的交叉编码,每次切换到C++时,我都会碰到这样的墙,它开始在我的神经中穿插。

< P>更改<代码> TraceCuryyDATA DATA()代码>至
轨迹数据d0

第一个声明了一个函数
d0
,该函数不带任何参数,并返回
轨迹\u数据

第二个显式且清晰地创建了名为
d0
轨迹数据的实例


这也适用于
轨迹_数据d1()

你似乎是这场灾难的受害者。基本上,这条线

trajectory_data d1();
实际上是在声明一个函数d1,该函数不带任何参数,并返回一个
tracture\u data
对象

改成

trajectory_data d1;

应该可以解决您的问题,对于
d0
也是如此。默认构造函数无论如何都会被调用,不需要
()

试试这个:
默认数据。向后推(轨迹数据()) 

这里可能是错误的,但是我认为这是一个微妙的C++解析错误,它使用的是TraseTraceTyyDATA D0.()。这被解释为函数声明,函数被称为d0并返回轨迹数据。尝试删除()。不过,如果您依赖于值初始化,则需要将其更改为
轨迹_数据d1=轨迹_数据()
轨迹_数据d1{}如果你能使用C++11。谢谢,我想我不应该在只睡了四个小时后就这么努力了。你只是阻止了一个程序员放弃C++,跳过NoDE.js: