[英]Can't get my constness right
我有一个像这样定义的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修饰符的变体,但没有走运。 有人请帮忙:)
const
承诺不会改变。
您声明一个指向const
节点的指针向量。 保证不会通过这些指针更改任何Node
。
然后, getLeaf
函数不能很好地返回一个指向非const
节点的指针,因为调用者可以对该节点执行任何操作。
因此,您必须在两个地方都做出相同的承诺,或者不要做出任何这样的承诺。
另一件事是getLeaf
本身是否应为const
(可能应该,让它保证不更改对象是有意义的),第二件事是get
意义是否应作为C ++中的前缀(通常不是,这是不必要的)冗长,而在Java中,有一些工具可以很好地利用诸如此类的前缀),我只称其为node
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.