Вы просто объявляете тип, а не фактический объект этого типа.Вам нужно сделать объявление структуры общедоступным, а объект приватным:
template <typename T>
class btree {
public:
btree(size_t maxNodeElems);
~btree() {}
struct node { // <- this is just a declaration of a private inner-class
list <T> elements;
node lvl[];
};
private:
size_t maxNodeElems;
node* memberNode; // <- this is the actual private member
};
Вы можете создавать объекты этого типа извне:
btree<A>::node* n = new btree<A>::node;
Для доступа к членам у вас могут быть открытые методы получения& setters в вашем классе btree:
class btree {
public:
node* getNode()
{
return memberNode;
}
//...........
//...........
};
РЕДАКТИРОВАТЬ:
Следующие работы для меня (инициализация члена):
template <typename T>
class btree {
public:
btree()
{
memberNode = new btree<T>::node;
}
~btree() {}
void init()
{
memberNode->lvl = new node[10];
}
struct node { // <- this is just a declaration of a private inner-class
list <T> elements;
node* lvl;
};
private:
size_t maxNodeElems;
node* memberNode; // <- this is the actual private member
};
int _tmain(int argc, _TCHAR* argv[])
{
btree<char> b;
b.init();
}