将通用值从struct复制到变量c ++

时间:2016-06-17 23:33:27

标签: c++ pointers struct copy

正如在描述中所说,我需要将一个值从struct中的变量复制到另一个,但它没有给我任何错误,cmd一直在崩溃。

struct GateNode
{
    string gatename;
    bool gatenPos=1;
    vector<struct GateNode*>inputs;
    bool (*ptrf)(vector<bool>);//puntatore a una funzione;
};

然后在main()

int main()
{
vector<bool> Op;
GateNode *ptr,g;
ptr=&g;
Op[0]=ptr->gatenPos;
return 0;
}

Cmd崩溃并没有给我任何错误!我怎样才能实现这一目标?如果 cout ptr-&gt; gatenPos它显示正确的值,但我无法复制它!

1 个答案:

答案 0 :(得分:1)

vector<bool> Op;

这会创建一个向量。向量是空的。它不包含任何内容。

Op[0]=ptr->gatenPos;

这会为Op中的值#0分配一些内容,即Op中的第一个值。但是,正如我们刚刚确定的那样,Op为空且不包含任何值。分配给不存在的值是未定义的行为,通常会导致崩溃。

您必须在矢量中插入新值。 Op[something]不会在向量中插入新值,它只是替换向量中必须存在的现有值。如果它不存在,则结果行为未定义。

std::vector包含几个将新值插入向量的函数,尤其是push_back()和insert()。在这种情况下,push_back()将是合适的:

Op.push_back(ptr->gatenPost);