Re: Problem using STL list and map objects as static member variables
Bit byte wrote:
Bit byte wrote:
I am writing a small parser object. I need to store keywords etc in
lsts. Because this data is to be shared by all instances of my parser
class, I have declared the variable as class variables (i.e.
statics). //declarations in parser class (private section)
static list<string> m_keywords, m_symbols_used;
static map<string, myParser::FuncData> m_mapped_funcs ;
I have initialization code like this:
m_symbols_used.clear();
//loadup keywords
m_keywords.clear()
m_keywords.push_back(ABC) ;
m_keywords.push_back(CDE) ;
...
I obviously can't place this in the constructor since they are
statics - (actually, I tried but I had linkage errors). Any ideas as
to how to initialize these variales ?
Hmmm, judging by the feedback I've had so far, I'd probably make my
self clearer:
This is an (abridged version of) my class.
class MyParser
{
public:
MyParser();
MyParser(const string);
MyParser(const MyParser&);
MyParser& operator= (const MyParser&);
private:
typedef struct { string name, int argc } FuncData ;
static list<string> m_keywords ;
static map<string,FuncData> m_mapped_funcs ;
Add here:
static int keyword_and_funcs_init_function();
static int dummy;
};
I wanted to know how can I initialize (i.e. populate) the static (and
private) member variables ?
Where you define the 'm_keywords', right after them, add:
int MyParser::dummy = MyParser::keyword_and_funcs_init_function();
/* static */ int MyParser::keyword_and_funcs_init_function()
{
/* do your stuffing of 'm_keywords' and 'm_mapped_funcs' here */
return 42;
}
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask