我有以下课程
档案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]
我如何将其转换为可以返回的常量指针?
答案 0 :(得分:2)
这是因为GetConnections
标记为const
但返回非常量指针。
相反,您应该通过const引用返回值,const指针或(我的建议):
const std::vector<NodeConnection*>& GetConnections() const;
创建成员函数const
意味着它不会(实际上不允许)更改任何对象成员变量。当你返回一个非const指针时,调用者可能会改变与函数的constness冲突的返回值。
导致错误的行是return
,当你返回一个const指针并且编译器必须将它转换为非const指针时。