我似乎无法做到这一点。
class Tree
{
Node* root;
vector& dict;
}
class Node
{
vector& dict;
char* cargo;
Node left;
Node right;
}
我希望Tree的每个实例都拥有它自己的dict,我希望它将对dict的引用传递给节点构造函数,该构造函数会递归地将引用传递给每个子节点,以便每个Node都可以输入指向本身就是字典。
我在语法方面遇到了很多麻烦:
我知道这些东西非常基本。我在教自己c ++。
由于
答案 0 :(得分:3)
您尚未指定您尝试过的无法正常工作,但我怀疑您在构造函数中遇到问题,因为无法将引用分配给;你必须初始化它。
此外,当您使用std::vector
时,您必须为元素类型使用模板参数。所以你不能只使用vector&
,你需要vector<Something>&
,其中Something
是元素类型。
所以,你可能想要这样的东西:
class Tree
{
private:
Node* root;
std::vector<Something>& dict;
public:
Tree(Node* aRoot, std::vector<Something>& aDict): root(aRoot), dict(aDict) {}
};
class Node
{
private:
std::vector<Something>& dict;
char*cargo;
Node left;
Node right;
Node(std::vector<Something>& aDict, char* aCargo): dict(aDict), cargo(aCargo) {}
};
答案 1 :(得分:2)
您只能在构造函数的初始化列表中初始化引用。例如,
Tree::Tree( vector<type>& d ) : dict(d)
{
...
}