Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将类型名称传递给模板化运算符_C++_Templates_Operator Overloading_Implementation_Rvalue - Fatal编程技术网

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的问题,只有通过“显式”调用操作符才能做到这一点


我的问题是,我如何解决这个问题,这样,如果我不能参数化一个常见的运算符调用,至少可以以不同的方式实现我的右值运算符[],以实现我想要实现的目标?

代码中有两个运算符可能会过载。
[]
运算符和
=
运算符。您可以重载
[]
以将右值返回给特殊类,然后根据该类是显示在运算符的左侧还是右侧,为该特殊类重载
=