Рассмотрим следующий код.В моем реальном сценарии у меня что-то вроде этого:
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
;) не работает.Я пробовал разные подходы, например, используя find()
функцию std::map
.Я получил ошибку «назначение члена std::pair<Article, status>::second
в объекте только для чтения».
Кто-то знает, как это сделать?Также, может быть, как лучше спроектировать целое?(все из строки «И это то, что я пытаюсь построить»).Также я бы предпочел использовать unordered_map
вместо map
, но он не работал.Спасибо