【发布时间】:2015-12-06 07:01:32
【问题描述】:
我正在尝试使用循环来使用插入方法填充地图。我有一张我正在尝试使用此方法填充的地图:
void board:: insertToMap(Letter c, int num){
this->myRackMap.insert(pair<Letter, int>(c, num));
}
我在这个循环中的另一个方法中调用这个辅助方法:
void board:: getRackAsMap(){
for (int i = 0; i < this->getMyRack().size(); ++i){
insertToMap(this->getMyRack().at(i), this->getMyRack().at(i).readScore());
}
}
//myRackMap is a map<Letter, int>
//myRack is a vector<Letter>
vector<Letter>& board::getMyRack(){
return this->myRack;
}
//readScore returns an Int value based on the char value of the current Letter
当我尝试运行它时,我收到一条长得可笑的错误消息,太长了,无法输入。错误信息的最后一行是这样的;但是:
"‘const Letter’不是从‘const std::multimap<_key _tp _>' { 返回 __x
这使我相信该错误与将我的 struct Letter 插入映射而不是原始数据类型有关。任何建议将不胜感激,因为我对 c++ 不太熟悉,感谢您提供的任何帮助!
编辑:这是 Letter.h 的样子
struct Letter{
private:
char theLetter;
int xPos;
int yPos;
public:
Letter();
Letter(char c);
Letter(int x, int y, char c);
void setPos(int x, int y);
void setLetter(char c);
int getXPos();
int getYPos();
char getTheLetter();
int readScore();
};
和 letter.cpp
Letter:: Letter(){
this->xPos = -1;
this->yPos = -1;
this->theLetter = '?';
}
Letter:: Letter(char c){
this->xPos = -1;
this->yPos = -1;
this->theLetter = c;
}
Letter:: Letter(int x, int y, char c){
this->xPos = x;
this->yPos = y;
this->theLetter = c;
}
int Letter:: getXPos(){
return this->xPos;
}
int Letter:: getYPos(){
return this->yPos;
}
char Letter:: getTheLetter(){
return this->theLetter;
}
void Letter:: setPos(int x, int y){
this->xPos = x;
this->yPos = y;
}
void Letter:: setLetter(char c){
this->theLetter = c;
}
int Letter:: readScore(){
switch (this->getTheLetter()){
case 'A':
return 1;
break;
case 'B':
return 3;
break;
//etc etc, returns int based on char of Letter
}
}
【问题讨论】:
-
您需要为您的密钥定义一个
operator<。在你的情况下,这将是Letter。 -
@simpel01 在
-
我们需要知道
Letter的样子。 -
@simpel01 我更新了帖子以包含这些信息,谢谢!
标签: c++ dictionary insert