所以我有一个类在其私有(private)变量中包含一个结构,在这个结构中我有一个数组,其中数组的大小仅在类的构造之后确定。
template <typename T>
class btree {
public:
btree(size_t maxNodeElems);
~btree() {}
private:
// The details of your implementation go here
size_t maxNodeElems;
struct node {
list <T> elements;
node lvl[];
};
};
首先,我是否必须使其成为 node * lvl
以及如何调用此结构内的变量?它是否与私有(private)变量相同,所以每当我在 btree class
中的一个函数中使用它时,我都可以称它为 btree.lvl
或者它是 btree->node->lvl
还是有特殊的方法来做到这一点?
另外,我的数组必须是 maxNodeElems+1
如果有人能帮助我,那将不胜感激!
最佳答案
您只是在声明类型,而不是该类型的实际对象。您需要公开您的结构声明并将对象设为私有(private):
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;
为了访问成员,您可以在 btree 类中使用公共(public) getter 和 setter:
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();
}
关于c++ - 构造一个内部有结构的类 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7818622/