不能让我的常数正确

时间:2014-02-12 02:00:57

标签: c++

我有一个像这样定义的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修饰符的变体而没有运气。有人请帮忙:))

1 个答案:

答案 0 :(得分:0)

const是一个不改变的承诺。

您声明了指向const个节点的指针向量。这是承诺不通过这些指针改变任何Node

getLeaf函数不能很好地返回指向非const节点的指针,因为调用者可以对节点做任何事情。

所以你必须在两个地方做出同样的承诺,或者不做任何这样的承诺。


另一个问题是getLeaf本身应该是const(它可能应该,让它承诺不改变对象是有道理的),另外一个问题是{{1}在C ++中作为前缀是有意义的(通常不是,它只是不必要的冗长,而在Java中有一些工具可以很好地利用这种前缀),我只是称之为get