【发布时间】:2018-10-01 12:01:37
【问题描述】:
考虑以下代码。 在我的真实案例中,我有类似的情况:
typedef enum
{
vehicle,
computer,
} Article;
这就是我想要构建的:
enum class status{
notPaid,
paid,
};
struct S {
status status_vehicle;
status status_computer;
std::map<Article, status> mymap =
{
{vehicle, S::status_vehicle},
{computer, S::status_computer},
};
};
int main ()
{
Article a1 = vehicle;
S::mymap.at(a1) = status::paid; // this line doesn't work
}
但是,最后一行 (S::mymap.at(a1) = status::paid;) 不起作用。我尝试了不同的方法,例如使用std::map 的find() 函数。我收到错误“在只读对象中分配成员 std::pair<Article, status>::second”。
有人知道,该怎么做吗?还有可能如何以更好的方式设计整体? (从“这就是我正在尝试构建的”这一行的全部内容)。
此外,我更愿意使用unordered_map 而不是map,但它不起作用。谢谢
【问题讨论】:
-
您确定这是正确的代码吗?我得到“致命错误:非静态数据成员'mymap'的无效使用”,这更有意义。
标签: c++ c++11 enums typedef unordered-map