我如何编码并传递(引用std :: vector)?

时间:2010-08-08 13:48:20

标签: c++ vector

我似乎无法做到这一点。

class Tree
{
    Node*   root;
    vector& dict;
} 

class Node
{
    vector& dict;
    char*   cargo;
    Node    left;
    Node    right;
}

我希望Tree的每个实例都拥有它自己的dict,我希望它将对dict的引用传递给节点构造函数,该构造函数会递归地将引用传递给每个子节点,以便每个Node都可以输入指向本身就是字典。

我在语法方面遇到了很多麻烦:

  • 初始化矢量
  • 将对vector的引用传递给Node构造函数
  • 在Node构造函数
  • 中接收引用

我知道这些东西非常基本。我在教自己c ++。

由于

2 个答案:

答案 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) 
{
  ...
}