C++ 如何编码和传递(对std::vector的引用)?
我似乎不能把这个弄对C++ 如何编码和传递(对std::vector的引用)?,c++,vector,C++,Vector,我似乎不能把这个弄对 class Tree { Node* root; vector& dict; } class Node { vector& dict; char* cargo; Node left; Node right; } 我希望树的每个实例都有自己的dict,我希望它将对dict的引用传递给节点构造函数,该构造函数将递归地将引用传递给每个子节点,以便每个节点都可以在dict中输入指向自身的指针
class Tree
{
Node* root;
vector& dict;
}
class Node
{
vector& dict;
char* cargo;
Node left;
Node right;
}
我希望树的每个实例都有自己的dict,我希望它将对dict的引用传递给节点构造函数,该构造函数将递归地将引用传递给每个子节点,以便每个节点都可以在dict中输入指向自身的指针
我在以下语法方面遇到了很多问题:
- 初始化向量
- 将对向量的引用传递给节点构造函数
- 在节点构造函数中接收引用
谢谢您只能在构造函数的初始化列表中初始化引用。比如说,
Tree::Tree( vector<type>& d ) : dict(d)
{
...
}
Tree::Tree(vector&d):dict(d)
{
...
}
只能在构造函数的初始化列表中初始化引用。比如说,
Tree::Tree( vector<type>& d ) : dict(d)
{
...
}
Tree::Tree(vector&d):dict(d)
{
...
}
您没有指定您尝试的不起作用的内容,但我怀疑您在构造函数中遇到了问题,因为无法分配引用;你必须初始化它
另外,当使用std::vector
时,必须为元素类型使用模板参数。所以你不能只使用向量&
,你需要向量&
,其中某物
是任何元素类型
所以,你可能想要这样的东西:
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) {}
};
类树
{
私人:
节点*根;
std::vector和dict;
公众:
树(Node*aRoot,std::vector&aDict):根(aRoot),dict(aDict){
};
类节点
{
私人:
std::vector和dict;
char*货物;
左淋巴结;
节点权;
节点(std::vector&aDict,char*aCargo):dict(aDict),cargo(aCargo){}
};
您没有指定您尝试的不起作用的内容,但我怀疑您在构造函数中遇到了问题,因为无法分配引用;你必须初始化它
另外,当使用std::vector
时,必须为元素类型使用模板参数。所以你不能只使用向量&
,你需要向量&
,其中某物
是任何元素类型
所以,你可能想要这样的东西:
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) {}
};
类树
{
私人:
节点*根;
std::vector和dict;
公众:
树(Node*aRoot,std::vector&aDict):根(aRoot),dict(aDict){
};
类节点
{
私人:
std::vector和dict;
char*货物;
左淋巴结;
节点权;
节点(std::vector&aDict,char*aCargo):dict(aDict),cargo(aCargo){}
};
类节点{…节点左;..}代码>不起作用。你需要使用一个指针,用于<代码>左和右< /Cord>节点。C++引用与爪哇/C引用没有任何共同之处。C#/Java引用更像是指针。使用“typedef vector&dict”会简化这个向量的使用吗?请找一个,否则你只会伤到你自己。@GMan:我找几个。感谢类节点{…节点左;..}代码>不起作用。你需要使用一个指针,用于<代码>左和右< /Cord>节点。C++引用与爪哇/C引用没有任何共同之处。C#/Java引用更像是指针。使用“typedef vector&dict”会简化这个向量的使用吗?请找一个,否则你只会伤到你自己。@GMan:我找几个。谢谢你在Node类中不缺少一个“public:”吗?在Node类中不缺少一个“public:”吗?