Я создал N классов, которые принимают от одного до N целых в конструкторы (и я надеялся, что этого будет достаточно), но, похоже, я ошибаюсь.
Вот 2 примера классов:
template < class T0 , class T1>
class my_map {
typedef T0 type_0;
typedef T1 type_1;
std::map<std::string, type_0* > T0_var;
std::map<std::string, type_1* > T1_var;
friend class apitemp;
public:
my_map( int meaningless0 = 42 , int meaningless1 = 42 ) {}
class apitemp {
std::string n_;
my_map* p;
public: apitemp(std::string name_, my_map* parent) : n_(name_), p(parent) {}
operator type_0*() {return p->T0_var[n_] ; }
operator type_1*() {return p->T1_var[n_] ; }
};
void insert(std::string name, type_0* ptr)
{ T0_var[name] = ptr; }
void insert(std::string name, type_1* ptr)
{ T1_var[name] = ptr; }
apitemp operator[](std::string n_) {return apitemp(n_, this);}
};
template < class T0>
class my_map
{
typedef T0 type_0;
std::map<std::string, type_0* > T0_var;
friend class apitemp;
public:
my_map( int meaningless0 = 42 ) {}
class apitemp
{
std::string n_;
my_map* p;
public:
apitemp(std::string name_, my_map* parent) : n_(name_), p(parent) {}
operator type_0*() {return p->T0_var[n_] ; }
};
void insert(std::string name, type_0* ptr)
{ T0_var[name] = ptr; }
apitemp operator[](std::string n_) {return apitemp(n_, this);}
};
Порядок не имеет значения ... когда присутствуют оба класса, я не могу скомпилировать свой код, когда один комментируется (и мы используем API только из одного из 2 классов), все компилируется ... но когда я пытаюсь использовать оба я получаю ошибки компилятора ... Так что мне интересно, как сделать такие классы переопределенными?