C++ 从重载的下标运算符调用虚函数
我试图在抽象类上重载下标运算符([]),重载调用的函数在具体对象中实现C++ 从重载的下标运算符调用虚函数,c++,C++,我试图在抽象类上重载下标运算符([]),重载调用的函数在具体对象中实现 class CollectionBase { public: double& operator[] (const int nIndex) { return getValue(nIndex); } virtual double getValue(int index) = 0; }; class Collection : public CollectionBase
class CollectionBase {
public:
double& operator[] (const int nIndex)
{
return getValue(nIndex);
}
virtual double getValue(int index) = 0;
};
class Collection : public CollectionBase
{
double getValue(int index) { return 0; }
};
我遇到的问题是,我的编译器在重载中调用getValue时抛出了一个错误
非常量引用的初始值必须是左值
有人知道我要做的事情的语法吗?问题是,您正在返回对从
getValue
返回的临时值的引用。要么让两个函数都返回double&
,要么都返回double
问题在于,您返回的是对从getValue
返回的临时值的引用。使两个函数都返回double&
,或者都返回double
是否打算从操作符[]
返回对double
的引用?是否打算从操作符[]
返回对double
的引用?返回0如果想要引用,代码>将是重载的getValue
中的一个问题。谢谢你的回答,我认为重载必须是reference@Charles贝利:我假设返回0
来自最小化要发布的代码。返回0如果想要引用,代码>将是重载的getValue
中的一个问题。谢谢你的回答,我认为重载必须是reference@Charles贝利:我假设返回0
来自最小化要发布的代码。