gpt4 book ai didi

c++ - 通过参数给指针赋值

转载 作者:太空狗 更新时间:2023-10-29 21:16:02 24 4
gpt4 key购买 nike

我有一个结构的构造函数,例如

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 );
}

抛出:

error: no match for ‘operator*’.

我试图将引用甚至指针指向引用。我在使用指针方面经验不多,所以我无法弄清楚如何做。

如何通过参数给指针赋值?

最佳答案

你可以使用&获取一些对象的内存地址,但是...

插入 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 );
}

这可能会像您希望的那样工作,但您还必须稍后删除所有对象。

关于c++ - 通过参数给指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36282520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com