J'ai un stackIndex défini comme enum suit:Comment initialiser une std :: map une fois pour qu'elle puisse être utilisée par tous les objets d'une classe?
typedef enum
{
DECK,
HAND,
CASCADE1,
...
NO_SUCH_STACK
} StackIndex;
J'ai créé une classe appelée MoveSequence
, qui est une enveloppe pour un std::deque
d'un bouquet de tuples de la forme <StackIndex, StackIndex>
.
class MoveSequence
{
public:
void AddMove(const tpl_move & move){ _m_deque.push_back(move); }
void Print();
protected:
deque<tpl_move> _m_deque;
};
Je pensais que je pourrais créer un membre std::map
statique de la classe MoveSequence
, ce qui se traduirait par un StackIndex
à un std::string
, pour une utilisation par la fonction Print()
. Mais quand j'ai essayé, je suis l'erreur:
"error C2864: 'MoveSequence::m' : only static const integral data members can be initialized within a class"
Si ce ne est pas possible de créer un std :: carte en tant que membre statique, est-il une autre façon de créer un std :: carte qui se traduit par un StackIndex
à un std::string
qui peut être utilisé pour imprimer des objets MoveSequence
?
merci
Beeband.
quelles sont ces itérations? –
Je ne sais pas, juste ce qu'il avait dans sa tête (c'est-à-dire je devine). Je vais le changer. – GManNickG
Merci GMan! J'ai essayé le boost assigner dans la classe, c'est ce qui m'a donné l'erreur. – BeeBand