C++ 在函数中创建新对象

标签 c++

我不知道为什么我不能

  1. 声明一个对象指针设置为 0
  2. 将对象指针传递给将创建该对象的函数
  3. 该函数将传递的指针设置为新分配的对象

示例

#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/

相关文章:

c++ - 在 QT 中生成 hmacSha256 值

c++ - 为什么程序成功取决于是否声明了重载构造函数?

c++ - OpenCL 多 GPU 积分 - 将全局大小从 32 更改为 64 时出现段错误

c++ - shared_ptr 和 shared_array 为引用计数器分配内存

c++ - ifstream object.eof() 不工作

c++ - 如何将具有不同参数的 std::function 传递给同一函数

c# - 意外输出打印长数字

android - 对 Callstack 库的 undefined reference 出现问题

c++ - 键盘输入键在 MFC 对话框中不起作用?

c++ - 什么是线程间操作