我正在尝试在堆上创建一个对象,然后从调用函数传回它的地址,但我无法让它工作!
如果从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.哦,我喜欢猫.
更改函数的签名以返回指针,并按值返回指针
Feline* newFeline(int height, int weight)
{
Feline *myFeline = new Feline(height, weight);
return myFeline;
}
Run Code Online (Sandbox Code Playgroud)
按照当前的编写,您返回一个Felineby值,然后立即泄漏Feline您分配的值new.