我不知道为什么我不能
- 声明一个对象指针设置为 0
- 将对象指针传递给将创建该对象的函数
- 该函数将传递的指针设置为新分配的对象
示例
#include <iostream>
using namespace std;
class Unit {
public:
Unit();
~Unit();
string name;
};
Unit::Unit(){}
Unit::~Unit(){}
void DoFoo(Unit *unit);
int main()
{
Unit *unit = 0;
DoFoo(unit);
cout << unit->name;
return 0;
}
void DoFoo(Unit *unit){
unit = new Unit();
unit->name = "hi";
}
结果是段错误...
在我的脑海中,我只是声明一个指针,将地址传递给函数,然后函数将地址设置为分配的对象的地址......
最佳答案
您传递指针的拷贝并在那里分配一个对象。使用引用文献:
void DoFoo(Unit *&unit);
void DoFoo(Unit *&unit){
unit = new Unit();
unit->name = "hi";
}
关于C++ 在函数中创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51727734/