Your concern is that if you are rturning a reference to data from within the object does that have to be const. Yes. This
class Test {
int m_num;
public:
int& getNum() const { return m_num; }
};
does not compile. You need
class Test {
int m_num;
public:
const int& getNum() const { return m_num; }
};
your case with a vector
class Test {
int m_num;
std::vector<int> m_vec;
public:
const int& getNum() const { return m_num; }
std::vector<int> getVec() const { return m_vec; }
};
works fine because you are returning a copy
but this is not ok
class Test {
int m_num;
std::vector<int> m_vec;
public:
const int& getNum() const { return m_num; }
std::vector<int> & getVec() const { return m_vec; }
};
has to be
class Test {
int m_num;
std::vector<int> m_vec;
public:
const int& getNum() const { return m_num; }
const std::vector<int> & getVec() const { return m_vec; }
};