>-6ren"> >-编辑 4:好的,我将问题缩小到一个小的 cpp 文件,给出了每个人都可以重现的相同错误消息: #include #include using namespace std; namespace{enum-6ren">
gpt4 book ai didi

c++ - map.insert : "Invalid arguments" error with pair>

转载 作者:太空狗 更新时间:2023-10-29 22:57:32 24 4
gpt4 key购买 nike

编辑 4:好的,我将问题缩小到一个小的 cpp 文件,给出了每个人都可以重现的相同错误消息:

#include<vector>
#include<map>
using namespace std;

namespace{enum class Colors{Black,White};}

class dummyClass{};

class MapTest
{
vector<dummyClass*> Dummys;
map<Colors,vector<dummyClass*>> dummyMap;
public:
MapTest()
{
Dummys.push_back(new dummyClass);
Dummys.push_back(new dummyClass);
dummyMap.insert(make_pair(Colors::White,Dummys));
}
~MapTest()
{
for(unsigned int i=0;i<Dummys.size();++i)
{
delete Dummys[i];
}
Dummys.clear();
dummyMap.clear();
}

};

int main()
{
MapTest m;
}

编辑 3:以防万一有人想知道。我删除了析构函数中的所有指针。没有发布它,因为我认为它与问题无关

编辑 2:在 .cpp 文件中添加了更多详细信息。 “Bauer”和“Position”类应该没有任何相关性。

我的头文件match.h:

#include <map>
#include"Bauer.h"
class Match
{
int counter{0};
std::vector<Figuren*> allFiguresWhite;
std::vector<Figuren*> allFiguresBlack;
std::map<Farben,std::vector<Figuren*>> samePlayerFig;
std::map<Farben,std::vector<Figuren*>> otherPlayerFig;
//more code...
}

“Farben”只是一个枚举:enum class Farben{black, white};在我的 match.cpp 中,我曾尝试在 map 中插入一个 par:

#include "match.h"
using namespace std;

Match::Match()
{
cout<<"Let the games begin\n";
InitGame();
}

void Match::InitGame()
{
for(int i=1;i<9;i++)
{
allFiguresWhite.push_back(new Bauer(Position{2,i},Farben::white, counter++));
allFiguresBlack.push_back(new Bauer(Position{7,i},Farben::black,counter++));
}
samePlayerFig.insert(make_pair(Farben::white,allFiguresWhite));
//more code...
}

不幸的是,我在这一行中收到编译器错误“Invalid arguments'”,其中“insert”带有红色下划线。知道我做错了什么吗?

编辑:这是完整的错误信息

Invalid arguments ' Candidates are: std::pair>>>,bool> insert(const std::pair>> &) std::pair>>>,bool> insert(#10000 &&) void insert(std::initializer_list>>>) std::_Rb_tree_iterator>>> insert(std::_Rb_tree_const_iterator>>>, const std::pair>> &) std::_Rb_tree_iterator>>> insert(std::_Rb_tree_const_iterator>>>, #10000 &&) void insert(#10000, #10000) ' match.cpp /chessGame line 17 Semantic Error

最佳答案

好的,这似乎是 Eclipse 特定的错误。我使用“g++ main.cpp -o main”从命令行编译了测试程序,它工作正常。将研究它为什么它在 eclipse 上不起作用。到目前为止,我已经编译了很多项目并且从未遇到过任何编译器问题。

关于c++ - map.insert : "Invalid arguments" error with pair<enum, vector <*>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43677044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com