我知道这个问题已经被问了很多,但没有答案可以帮助我解决我的具体问题。
我得到了着名的“临时地址”错误。据我所知,这是因为我试图将临时对象转换为指针。
但是这里有没有人有解决方法来解决这个问题?
我发现错误的代码如下:
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> ^
答案 0 :(得分:0)
您正在创建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));
stdafx.h