错误:获取临时地址
Error: taking address of temporary
我知道这个问题已经被问了很多,但没有一个答案可以帮助我解决我的特定问题。
我得到了著名的"临时地址"错误。据我了解,这是因为我正在尝试将临时对象转换为指针。
但是这里有人有解决方案可以解决我如何在这里解决这个问题吗?
发生错误的代码如下:
newGame = &MenuOption(optionNewGame, text_new_game.width, 2, 0);
newGame 的声明如下所示:
MenuOption *newGame;
错误如下所示:
1> c:/path/to/project/MainMenu.h:27:65: error: taking address of temporary [-fpermissive]
1> newGame = &MenuOption(optionNewGame, text_new_game.width, 2, 0);
1> ^
您正在创建MenuOption
类的临时对象。然后,将此临时对象的地址存储在 newGame
中。离开控制块后,临时对象将被删除,指针将变为"悬空指针"。
解决 方案:
-
MenuOption newGame(optionNewGame, text_new_game.width, 2, 0);
-
newGame = new MenuOption(optionNewGame, text_new_game.width, 2, 0);
- 使用
unique_ptr
:std::unique_ptr< MenuOption> newGame;
newGame.reset( new MenuOption(optionNewGame, text_new_game.width, 2, 0));
相关文章:
- 如何在C++中获取该对象的类声明中对象的地址?
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- 如何获取C++字符数据类型的地址
- 如果 const 不分配内存,为什么我可以获取 const 的地址?
- 如何在 c++ stl 中获取列表中被推回的元素的地址,在常量时间内?
- 是否可以在C++中获取 CHAR 的有效十六进制地址?
- 动态获取 esp32 的 mac 地址并在以太网库中使用它.
- 如何根据指针地址获取指针内容
- 从对象及其成员的地址获取指向成员的指针
- 如何从地址获取字符串?
- 从内存地址获取值
- PIN从指令地址获取程序集操作码
- 使用数组的地址获取过期指针
- 从调用堆栈地址获取函数参数
- 从IP地址获取完整的计算机名称,例如 abc.xyz.xvvx.net
- 如何通过地址获取元组中元素的索引
- 从成员的地址获取成员的索引
- 从IPv4地址获取网络接口名称
- 如何通过符号在内存中的地址获取有关符号的更多信息
- 正在WinDbg中按地址获取类型