C++;myClass的运算符重载(x,y,z)=值 在C++中,我应该如何重载函数调用操作符,以便我的类的一个实例可以接受这样的表达式: MyCype(x,y,z)=值< /COD>?< /P>

C++;myClass的运算符重载(x,y,z)=值 在C++中,我应该如何重载函数调用操作符,以便我的类的一个实例可以接受这样的表达式: MyCype(x,y,z)=值< /COD>?< /P>,c++,operator-overloading,C++,Operator Overloading,我有一个模板类Array3D,它用作1D数组的包装器。我想在此数组中的某个索引处设置一个指定值。到目前为止,我一直使用这样的常规函数来执行此操作: array.setValueAt(intx,inty,intz,intvalue)但是现在我想重载函数调用操作符并使用它。比如说: array(x,y,z)=value您需要函数调用操作符,操作符(): 您应该让它返回一个左值(或其他使赋值重载的内容),以便赋值示例工作 用法: Foo a; a(1, 2, 3) = 10; assert(a.x

我有一个模板类Array3D,它用作1D数组的包装器。我想在此数组中的某个索引处设置一个指定值。到目前为止,我一直使用这样的常规函数来执行此操作:
array.setValueAt(intx,inty,intz,intvalue)

但是现在我想重载函数调用操作符并使用它。比如说:
array(x,y,z)=value
您需要函数调用操作符,
操作符()

您应该让它返回一个左值(或其他使赋值重载的内容),以便赋值示例工作

用法:

Foo a;
a(1, 2, 3) = 10;

assert(a.x == 10);

如果您的类持有某种类型的值
ValueType
,则可以返回对它的引用:

ValueType和操作符()(intx,inty,intz)

假设您使用
int
编制索引。为完整起见,您可能会发现添加以下内容很方便:

constvaluetype&运算符()(intx,inty,intz)const


用于常量访问该值。

什么是“映射到成员”?我的意思是类中有一个等效的成员变量,将使用这些参数进行赋值。什么是“等效”?
myClass(x,y,z)
是否具有与
myClass(z,y,x)
相同的行为?即使没有编译,也请编写一个简单的示例,说明预期的行为。如果“x”不是唯一的成员。假设我有相同类型的myValue0、myValue1、myValue2,但我希望此运算符只影响其中一个。这个方法行得通吗?@G.Rassovsky:嗯,重载运算符只是函数,所以任何对普通函数有意义的东西都可以在这里应用。我明白了,但我的具体问题是:我有一个模板类Array3D,它用作1D数组的包装器。我想在此数组中的某个索引处设置一个指定值。到目前为止,我一直使用一个常规函数,比如:setValueAt(intx,inty,intz,intvalue),但现在我想重载函数调用操作符并使用它。如果我的问题不清楚,很抱歉。@G.Rassovsky:请在问题中详细说明。
Foo a;
a(1, 2, 3) = 10;

assert(a.x == 10);