我有一个构造函数例如
struct MyStruct{
int age;
string name;
MyStruct_Two * link;
Mystruct( int age , string name , MyStruct_Two temp){
this -> age = age;
this -> name = name;
this -> link = temp;
}
}
我想做的是创建将包含这些结构的
vector<MyStruct> v
。但是每个结构都将具有指向另一个数组中另一个结构的指针。我创建了一个函数使其变为实数=
vector<MyStruct> v
vector<MyStruct_Two> v_two
void AddStructToStruct( int age , string name ,vector<MyStruct> &v , vector <MyStruct_Two & v_two ){
MyStruct_Two temp( age , name ); // create struct
v.push_back( MyStruct( age , name , *temp ) ); // put pointer as arg
v_two.push_back( temp );
}
这引发:
我试图把引用,甚至指向引用的指针。我在使用指针方面不是很有经验,所以我不知道如何清楚地做到这一点。
如何通过参数分配指针的值?
最佳答案
您可以使用&
获取一些对象的内存地址,但是...
推入 vector 可复制(或移动)对象。因此,指针将在退出功能范围后悬挂。
如果更改为:
vector<MyStruct> v
vector<MyStruct_Two *> v_two
void AddStructToStruct( int age , string name ,vector<MyStruct> &v , vector <MyStruct_Two *> & v_two ){
MyStruct_Two *temp = new MyStruct_Two( age , name );
v.push_back( MyStruct( age , name , temp ) );
v_two.push_back( temp );
}
这可能会按您希望的方式工作,但是您还必须稍后对所有对象进行
delete
。