C++ 将类型名称传递给模板化运算符
我知道有些问题的主题是相同的,但这一个要求更具体一些 我正在创建一个个人使用的多类型模板容器。细节并不重要,但以下是我想在容器中使用的基本运算符:C++ 将类型名称传递给模板化运算符,c++,templates,operator-overloading,implementation,rvalue,C++,Templates,Operator Overloading,Implementation,Rvalue,我知道有些问题的主题是相同的,但这一个要求更具体一些 我正在创建一个个人使用的多类型模板容器。细节并不重要,但以下是我想在容器中使用的基本运算符: obj[n]返回自己的类型,以便可以使用它来分配值,如obj[n]=value(作为左值) 重载的obj[n]返回存储在“数组”中的检索值,如something=obj[n](作为右值) 第二个重载运算符就是我要讨论的运算符 使用一个极其简单的示例,下面是我的类的基本外观: template <typename T1, typename T
返回自己的类型,以便可以使用它来分配值,如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;
}
};
模板
课例
{
/*一些私人和公共定义*/
示例和运算符[](int n)
{
电流=n;
归还*这个;
}
模板
U运算符[](整数n)
{
/*一些操作*/
归还某物;
}
};
问题是,我想参数化重载运算符的返回值
我在这里读到一个关于stackoverflow的问题,只有通过“显式”调用操作符才能做到这一点
我的问题是,我如何解决这个问题,这样,如果我不能参数化一个常见的运算符调用,至少可以以不同的方式实现我的右值运算符[],以实现我想要实现的目标?代码中有两个运算符可能会过载。
[]
运算符和=
运算符。您可以重载[]
以将右值返回给特殊类,然后根据该类是显示在运算符的左侧还是右侧,为该特殊类重载=