从常量函数返回引用

kal*_*kal 1 c++ methods const

#include "iostream"
#include "vector"

class ABC {

};

class VecTest {

  std::vector<ABC> vec;

  public:

  std::vector<ABC> & getVec() const { //Here it errors out
      return vec;
  }

};
Run Code Online (Sandbox Code Playgroud)

删除const修复它,不是getVec是一个常量方法的情况.那为什么不允许这样做?

Ray*_*yat 10

你应该做的是返回一个const引用.

const std :: vector&getVec()const {return vec; }

这是不允许的,因为你说getVec是一个const方法,这意味着该方法不应该以任何方式改变这个对象.返回非const引用可能允许更改其对象,因此编译器不允许它.