参考类型变量的getters c ++

时间:2014-03-05 16:47:53

标签: c++

std::vector<Node>& Way::GetNodesCollection() const {
return this->nodesCollection;}

这样会收到错误“类型为'std::vector<Node>&'的引用无效初始化” 如何正确初始化。

2 个答案:

答案 0 :(得分:3)

您正尝试从const方法向类成员返回非const引用。这是不允许的,因为它会违反const类成员函数的语义(它只能访问this的const版本。)

要修复错误,请写

const std::vector<Node>& Way::GetNodesCollection() const {
    return nodesCollection;
}

std::vector<Node>& Way::GetNodesCollection() {
    return nodesCollection;
}

答案 1 :(得分:0)

如上所述,这不仅仅是一个“getter”,因为我可以获得引用然后修改内容。您想要另一个const修饰符:

const std::vector<Node>& Way::GetNodesCollection() const {
     return this->nodesCollection;
}