从指针到常量指针的转换无效

invalid conversion from pointer to const pointer

本文关键字:指针 转换 无效 常量      更新时间:2023-10-16

我有以下类

文件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转换为常量指针。但是,我不断收到错误

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

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

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

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

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

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

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