错误与const修饰符 - 返回类型似乎没问题

时间:2014-02-12 02:52:53

标签: c++

我无法解决这个问题......

所以我有这样的类Node定义(这是一个最小版本)

class Node {

private:
    std::vector <const Node*> leaves;

public:
    const Node* get_Leaf(int i);

我已经像这样定义了get_Leaf

const Node* Node::get_Leaf(int i){
    return leaves[i];
}

但是,我仍然得到错误“无法将const Node *转换为Node *。

有人请帮忙

1 个答案:

答案 0 :(得分:3)

在这里做出假设。

Node * n;
n->get_Leaf(0);              //works, returns const Node*
n->get_Leaf(0)->get_Leaf(0); //fails, can't call
                             //(const Node* Node::get_Leaf) on const Node*

假设您在get_Leaf的返回值或返回get_Leaf的其他函数上调用const Node*。在这种情况下,您需要像get_Leaf

那样声明const Node* get_Leaf(int i) const;