我有一个构造函数例如

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

09-10 00:10
查看更多