如何正确地将引用转换为指针?
下面的代码给出了以下警告:“取临时地址”。
MyClass myclass;
vector<MyClass*> myClassList;
myClassList.push_back(&myclass);
MethodThatsNeedsVectorOFMyClassPointers(myClassList);
答案 0 :(得分:3)
您的代码现在的样子,您不应该收到警告,因为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
是多态的吗?你真的需要在向量中存储指针吗?