【发布时间】:2017-01-20 02:37:11
【问题描述】:
我知道有相同主题的问题,但这个问题要求更具体的问题。
我正在创建一个个人使用的多类型模板化容器。细节并不重要,但以下是我想在容器中使用的基本运算符:
obj[n]返回自己的类型,以便它可以像obj[n]=value;一样用于赋值(作为左值)重载的
obj[n]返回存储在“数组”中的值,如something=obj[n];(作为右值)
第二个重载运算符就是我要讲的那个。
使用一个非常简单的示例,这是我的班级的基本外观:
template <typename T1, typename T2>
class example
{
/*some private and public definitions*/
example<T1, T2>& operator[] (int n)
{
current = n;
return *this;
}
template <typename U>
U operator[] (int n)
{
/*some operations*/
return something;
}
};
问题是,我想参数化重载运算符的返回值。
我在 stackoverflow 上读到一个问题,只有通过“显式显式”调用运算符才能做到这一点。
我的问题是,我该如何解决这个问题,以便如果我不能对通常的运算符调用进行参数化,至少要以不同的方式实现我的右值运算符 [] 以实现我想要实现的目标?
【问题讨论】:
标签: c++ templates operator-overloading implementation rvalue