嗨,我想在我的類中有一個 getter,它回傳對物件向量的“只讀”參考。這些物件中的每一個都有自己的變數和函式,我需要呼叫它們。我試圖設定它的方式是讓主類中的 getter 回傳一個 const 參考。但是,我似乎無法訪問向量中保存的物件的值。有一個更好的方法嗎?這是一個最小的可重現示例。謝謝你。
#include <vector>
class Obj
{
private:
int val;
public:
Obj() { val = 10; }
inline int getVal() { return val; }
};
class Foo
{
private:
std::vector<Obj> obsVec;
public:
Foo()
{
Obj a;
Obj b;
obsVec.push_back(a);
obsVec.push_back(b);
}
const std::vector<Obj>& getConstRef() const { return obsVec; }
};
int main()
{
Foo foo;
foo.getConstRef()[0].getVal(); // Here is where I get the error
return 0;
}
我得到的錯誤是:
錯誤(活動) E1086 物件具有與成員函式“Obj::getVal”不兼容的型別限定符
uj5u.com熱心網友回復:
您需要宣告getVal()為 const:
inline int getVal() const { return val; }
代替:
inline int getVal() { return val; }
uj5u.com熱心網友回復:
foo.getConstRef()[0]回傳const A &,但getVal不標記const。
另請注意,inline這里沒有用,因為在類主體中定義(而不是宣告)的函式是隱式的inline。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450303.html
