繁体   English   中英

无法保持我的健康

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM