如何正确地将引用转换为指针?
下面的代码给了我以下警告:“获取临时地址”。
MyClass myclass;
vector<MyClass*> myClassList;
myClassList.push_back(&myclass);
MethodThatsNeedsVectorOFMyClassPointers(myClassList);
最佳答案
您的代码现在的样子,您不应该收到警告,因为 myclass
和 myClassList
具有相同的生命周期。但是,如果 myClassList
比 myclass
长,则需要动态分配 MyClass
:
vector<MyClass*> myClassList;
{
MyClass* myclass = new MyClass;
myClassList.push_back(myclass);
}
如果以下内容更接近您的实际情况:
vector<MyClass*> myClassList;
{
MyClass myclass;
myClassList.push_back(&myclass);
}
然后 myclass
在结束 时被销毁,并且
myClassList
将包含指向已释放内存的指针。
此外,MyClass
是多态的吗?您真的需要在 vector 中存储指针吗?
关于c++ - 如何正确地将引用转换为指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9904163/