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

标签 c++

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

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

MyClass myclass;

vector<MyClass*> myClassList;

myClassList.push_back(&myclass);

MethodThatsNeedsVectorOFMyClassPointers(myClassList);

最佳答案

您的代码现在的样子,您不应该收到警告,因为 myclassmyClassList 具有相同的生命周期。但是,如果 myClassListmyclass 长,则需要动态分配 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/

相关文章:

c++ - 如何使用execl替代系统

c++ - Boost Spirit 调试输出不出现

c++ - 了解编译器的工作原理

c++ - 用于通过网络发送的安全 C 结构序列化? - C++

c++ - C/C++ 中的搜索字符串解析器

c++ - boost spirit skipper 问题

c++ - 将 gprof 与套接字一起使用

c++ - 为什么 iostream 对象不重载 operator bool?

c++ - 您能否将一个异常继承层次结构包装到另一个异常继承层次结构中? --或者,另一种干净的方法来处理这个问题?

c++ - 如何使用 WinDbg 分析 VC++ 应用程序的故障转储?