我试图在抽象类上重载下标操作符([]),重载调用的函数将在具体对象中实现。
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时抛出了一个错误。
对非const的引用的
初始值必须是l值。
有人知道我想做什么的语法吗?
发布于 2012-06-19 13:37:46
问题是,您正在返回对从getValue
返回的临时值的引用。要么使两个函数返回double&
,要么都返回double
。
https://stackoverflow.com/questions/11109811
复制