如何正确地将引用转换为指针?

时间:2012-03-28 08:56:50

标签: c++

如何正确地将引用转换为指针?

下面的代码给出了以下警告:“取临时地址”。

MyClass myclass;

vector<MyClass*> myClassList;

myClassList.push_back(&myclass);

MethodThatsNeedsVectorOFMyClassPointers(myClassList);

1 个答案:

答案 0 :(得分:3)

您的代码现在的样子,您不应该收到警告,因为myclassmyClassList具有相同的生命周期。但是,如果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是多态的吗?你真的需要在向量中存储指针吗?