如何使用指针从函数传递堆上的对象地址

Tim*_* UK 0 c++ pointers

我正在尝试在堆上创建一个对象,然后从调用函数传回它的地址,但我无法让它工作!

如果从main调用此函数,为什么我不能将对象的地址存储在新指针中?

Feline newFeline(int height, int weight) {
  Feline *myFeline = new Feline(height, weight);
  return *myFeline;
}

int main()
{
  Feline *f2;
  *f2 = newFeline(10, 100);
  //cout << f2->getHeight() << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到一个总线错误:10.哦,我喜欢猫.

Cor*_*mer 5

更改函数的签名以返回指针,并按值返回指针

Feline* newFeline(int height, int weight)
{
  Feline *myFeline = new Feline(height, weight);
  return myFeline;
}
Run Code Online (Sandbox Code Playgroud)

按照当前的编写,您返回一个Felineby值,然后立即泄漏Feline您分配的值new.

  • @TimHUK:当问题得到解答后,问题变得非常痛苦.对于那些稍后会阅读此内容的人来说,这会让一切变得混乱 此外,您的更改使您的代码甚至无法编译,您仍在问题中声明. (3认同)