c++ - How to initialise a std::map once so that it can be used by all objects of a class? -


i have enum stackindex defined follows:

typedef enum  {     deck,     hand,     cascade1,     ...     no_such_stack } stackindex; 

i have created class called movesequence, wrapper std::deque of bunch of tuples of form <stackindex, stackindex>.

class movesequence {     public:         void addmove( const tpl_move & move ){ _m_deque.push_back( move ); }         void print();     protected:     deque<tpl_move> _m_deque; }; 

i thought create static std::map member of movesequence class, translate stackindex std::string, use print() function. when tried, got error:

"error c2864: 'movesequence::m' : static const integral data members can initialized within class" 

if not possible created std::map static member, there way create std::map translates stackindex std::string can used print out movesequence objects?

thanks

beeband.

you can make std::map static member of class. can't initiliaze within class definition. note error telling you:

error c2864: 'movesequence::m' : static const integral data members can *initialized* within class

so, want have in header:

class movesequence {     static std::map<stackindex, std::string> _m_whatever; }; 

and in source (.cpp) file want this:

std::map<stackindex, std::string> movesequence::_m_whatever( ..constructor args.. ); 

Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -