'class std :: map <std :: basic_string <char>,Gui&gt;'没有名为'emplace'的会员

时间:2015-08-20 21:05:03

标签: c++ c++11 gcc sfml

嗨Guy正在寻求帮助而无法理解问题。我正在学习本教程https://www.binpress.com/tutorial/creating-a-city-building-game-with-sfml-part-8-gui-system/130,我正在使用CodeBlocks 13.12和SFML 2.1但是当我尝试编译代码时我得到了这个

||=== Build: Debug in Test (compiler: GNU GCC Compiler) ===|
C:\Users\James\Desktop\Summer Repeats 2015\Games Dev 2\Test\src\Game_State_Start.cpp||In constructor 'GameStateStart::GameStateStart(Game*)':|
C:\Users\James\Desktop\Summer Repeats 2015\Games Dev 2\Test\src\Game_State_Start.cpp|100|error: 'class std::map<std::basic_string<char>, Gui>' has no member named 'emplace'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

这是给我这个错误的代码行。

this->guiSystem.emplace("menu", Gui(sf::Vector2f(192, 32), 4, false, game->stylesheets.at("button"),
    { std::make_pair("Load Game", "load_game") }));

我为C ++ 11设置了CodeBlocks并将SFML更改为SFML-2.3.1-windows-gcc-4.9.2-mingw-32-bit,因为我在这里说我必须使用g ++ 4.8.0或更高版本在这个页面std::map emplace gcc 4.8.2,但仍然得到相同的错误,网站给我的代码下载,即使我试图自己跟踪它,我检查代码,导入到一个新的项目,并没有'也工作,所以不知道什么是错的。任何帮助或朝着正确方向的观点都将非常受欢迎。

2 个答案:

答案 0 :(得分:3)

通常情况下,我会在评论中发帖,但我没有足够的代表 启动一个新项目并编译并运行此代码:

#include <iostream>
#include <ostream>

int main()
{
    std::cout << __cplusplus << std::endl;
}

如果打印出的结果是199711,则表示您没有使用-std=c++11选项进行编译。如果打印出的结果是201101,则表示您使用的是标准库的过时版本。

答案 1 :(得分:0)

找到解决方案。我最初安装了codeblocks-13.12mingw-setup,我卸载了这个并安装了codeblocks-13.12mingw-setup-TDM-GCC-481。它现在有效。谢谢大家的帮助。