正如在描述中所说,我需要将一个值从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它显示正确的值,但我无法复制它!
答案 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);