我试图在堆上创建一个对象,然后从调用函数传回它的地址,但我无法让它工作!
如果这个函数是从 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;
}
当我运行它时,出现总线错误:10。哦,我确实喜欢猫。
最佳答案
更改函数的签名以返回指针,并按值返回指针
Feline* newFeline(int height, int weight)
{
Feline *myFeline = new Feline(height, weight);
return myFeline;
}
如当前所写,您按值返回一个Feline
,然后立即泄漏您用new
分配的Feline
。
关于c++ - 如何使用指针从函数传递对象在堆上的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32300106/