我有一个像这样定义的Node类(这是一个最小版本):
class Node {
private:
std::vector <const Node*> leaves;
public:
Node* getLeaf(int i);
}
换句话说,我希望getLeaf返回一个指向矢量“leaves”
元素的指针我尝试像这样定义getLeaf
Node* Node::getLeaf(int i){
return leaves[i];
}
好的,所以我知道我正在搞乱这个常数。我在我的函数声明/定义中尝试了const修饰符的变体而没有运气。有人请帮忙:))
答案 0 :(得分:0)
const
是一个不改变的承诺。
您声明了指向const
个节点的指针向量。这是承诺不通过这些指针改变任何Node
。
getLeaf
函数不能很好地返回指向非const
节点的指针,因为调用者可以对节点做任何事情。
所以你必须在两个地方做出同样的承诺,或者不做任何这样的承诺。
另一个问题是getLeaf
本身应该是const
(它可能应该,让它承诺不改变对象是有道理的),另外一个问题是{{1}在C ++中作为前缀是有意义的(通常不是,它只是不必要的冗长,而在Java中有一些工具可以很好地利用这种前缀),我只是称之为get
。