[LC++]How to define a static map member?

Shaul Karl shaulka at bezeqint.net
Tue Apr 2 17:06:05 UTC 2002

I am trying to have get a static member of a class to be of type 
    map<const string, pointer*>.

What is the correct way for doing it?

 * main.cc.

#include <algorithm>
#include <iostream>
#include <map>
#include <stdexcept>
#include <string>

using namespace std;

class category
        category(const string&)  throw(runtime_error);
        static map<const string, category*> allCategories;

category::category(const string &name)
    allCategories.insert(map<const string, category*>::value_type(
                                                           name, this));
catch(const exception &excp) { throw; }

int main(void)
try {
    return 0;
catch(const exception &excp) {
    cerr << excp.what() << "\n";

$ g++-3.0 -Wall main.cc
/tmp/ccOmjj03.o: In function `category::category[not-in-charge](std::bas
ic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/tmp/ccOmjj03.o(.text+0x29): undefined reference to 
/tmp/ccOmjj03.o: In function `category::category[in-charge](std::basic_s
tring<char, std::char_traits<char>, std::allocator<char> > const&)':
/tmp/ccOmjj03.o(.text+0x109): undefined reference to 
collect2: ld returned 1 exit status

When I have tried to add a

    map<const string, category*> catergory::allCategories;

outside of the class I got a syntax error:

main.cc:23: syntax error before `::' token


    Shaul Karl
    email: shaulka(at-no-spam)bezeqint.net 
           Please substitute (at-no-spam) with an at - @ - character.
           (at-no-spam) is meant for unsolicitate mail senders only.

More information about the tuxCPProgramming mailing list