0

我有以下课程

文件Node.c

std :: vector<NodeConnection*>* Node :: GetConnections() const
{
    const std :: vector <NodeConnection*> * output = &this->connections;
    return output;
}

文件Node.h

class Node {
    private:
        std :: vector <NodeConnection*> connections;
    public:
        std :: vector <NodeConnection*>* GetConnections() const;
};

我正在尝试将其转换vector connections为 const 指针。但是,我不断收到错误

[Error] invalid conversion from 'const std::vector<NodeConnection*>*' to 'std::vector<NodeConnection*>*' [-fpremissive]

我将如何将其转换为可以返回的常量指针?

4

1 回答 1

2

这是因为GetConnections被标记为const但返回一个非常量指针。

相反,您应该通过值、const 指针或(我的建议)通过 const 引用返回:

const std::vector<NodeConnection*>& GetConnections() const;

制作成员函数const意味着它不会(实际上是不允许的)更改任何对象成员变量。当您返回一个非常量指针时,调用者可能会更改与函数的常量性冲突的返回值。

导致错误的行是return, 当您返回 const 指针并且编译器必须将其转换为非常量指针时。

于 2013-10-20T11:31:32.603 回答