所以我想做的是将我的枚举映射到指向对象的指针。这是我目前的代码:
enum state {A,B,C};
class imageTexture {
public:
imageTexture(std::string path) {};
};
int main() {
std::map<state, imageTexture*> theMap;
theMap[A] = new imageTexture("a");
return 0;
}
这是它停止工作的地方。完整的错误是:
地图
没有可行的重载运算符[]
我已经对此做了一些研究,我发现了一些不变的东西,但我可以很好地解决这个错误。我还查看了地图的一些示例代码并且更加困惑:
std::map<string, int> theMap;
theMap['A'] = 1;
这与我所做的一样,但是我的工作没有。有人可以帮我吗?任何解释都将不胜感激。
编辑:更新我遇到问题的代码部分
编辑2:我在线尝试了代码,但它确实有效。但是,它不在我的笔记本电脑中。它只是我的编译器不能使用c ++ 11的问题吗?
答案 0 :(得分:1)
检查您的代码或帖子,我认为您遗漏了重要的内容。这段代码非常完美:
#include <iostream>
#include <map>
enum state { RED, YELLOW, GREEN };
class foo
{
int a;
};
int main()
{
std::map<state, foo *> theMap;
theMap[RED] = new foo();
std::cout << "That's all" << std::endl;
}
EDITED:它也适用于C ++ 98(-std = c ++ 98)