C++;myClass的运算符重载(x,y,z)=值 在C++中,我应该如何重载函数调用操作符,以便我的类的一个实例可以接受这样的表达式: MyCype(x,y,z)=值< /COD>?< /P>
我有一个模板类Array3D,它用作1D数组的包装器。我想在此数组中的某个索引处设置一个指定值。到目前为止,我一直使用这样的常规函数来执行此操作: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
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);