在 const 引用中调用函数
Calling functions inside of const references
您好,我想在我的 class 中有一个 getter,return 是对对象向量的“只读”引用。这些对象中的每一个都有自己的变量和函数,我需要调用它们。我尝试设置它的方法是在主 class return 中设置 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;
}
我得到的错误是:
Error (active) E1086 the object has type qualifiers that are not compatible with the member function "Obj::getVal"
foo.getConstRef()[0]
returnsconst A &
,但是getVal
没有标明const
.
另请注意,inline
在这里没有用,因为在 class 主体中定义(而不是声明)的函数隐式 inline
.
您需要将 getVal()
声明为 const:
inline int getVal() const { return val; }
而不是:
inline int getVal() { return val; }
您好,我想在我的 class 中有一个 getter,return 是对对象向量的“只读”引用。这些对象中的每一个都有自己的变量和函数,我需要调用它们。我尝试设置它的方法是在主 class return 中设置 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;
}
我得到的错误是:
Error (active) E1086 the object has type qualifiers that are not compatible with the member function "Obj::getVal"
foo.getConstRef()[0]
returnsconst A &
,但是getVal
没有标明const
.
另请注意,inline
在这里没有用,因为在 class 主体中定义(而不是声明)的函数隐式 inline
.
您需要将 getVal()
声明为 const:
inline int getVal() const { return val; }
而不是:
inline int getVal() { return val; }