在C ++中为类创建赋值(=)运算符
可能重复:
运算符超载
编辑2
我正在使用插入(...)不正确,我实际上并不需要'='运算符。 抱歉浪费人们的时间。 我已投票结束..仍然有2票。 请投票。
编辑
我想要'='运算符的原因是我可以在Derivation对象的矢量上使用insert(...)函数。 目前我的编译器说:
/usr/include/c++/4.2.1/bits/stl_algobase.h:283: error: no match for 'operator=' in '* __result = * __first'
我之前为自己的类创建了'=='和'<'运算符,但我正在努力创建'='运算符。 我的类看起来像这样(忽略愚蠢的变量名称):
class Derivation {
public:
string rc;
ImplementationChoice Y;
vector<Derivation> X;
vector<string> D;
vector<string> C;
vector<Player> P, O;
vector<Attack> B;
// various functions
// ...
};
我想知道我需要投入什么
// What do '=' return? An object of the class right?
Derivation& operator=(const Derivation &d) const {
// something....
}
非常感谢。
首先,赋值运算符可能不应该是const -
其次,赋值操作符通常返回一个非const引用给被赋值为(* this)的对象
你不需要一个。 编译器生成的将会很好。
首先删除const ...然后如果你真的需要一个复制操作符 ,那么做一些类似的事情并添加你自己的逻辑(这样它就不会完全做到编译器生成的复制操作符会做什么):
Derivation& operator=(const Derivation& other) {
this->rc = other.rc;
this->Y = other.Y;
this->X = other.X;
this->D = other.D;
this->C = other.C;
this->P = other.P;
this->O = other.O;
this->B = other.B;
// ...
return *this;
}
链接地址: http://www.djcxy.com/p/12705.html