可能重复:
编辑2
我正在使用insert(.)不对,我实际上不需要'=‘操作符。很抱歉浪费了人们的时间。我已经投票结束了..。还有2票。请投票。
编辑
我想要'=‘运算符的原因是我可以使用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....
}非常感谢。
发布于 2011-07-18 14:02:28
这取决于你,真的。你需要接线员做什么?您想返回一个引用,还是要一个副本?
编辑:请注意这是修辞。使用此向量的内容将决定您是否需要引用或副本。例如,如果插入的对象在从向量中删除之前在任何时候都会超出作用域,那么您将需要一个副本。如果没有,并且希望在更改向量中的实例时实现原始对象,则需要一个引用。希望这能帮点忙。
发布于 2011-07-18 14:02:52
首先移除康斯特..。然后是,如果您确实需要一个复制操作符,那么执行类似的操作,并添加您自己的逻辑(这样它就不会完全按照编译器生成的复制运算符所做的那样做):
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;
} 发布于 2011-07-18 14:03:09
首先,赋值运算符可能不应该是const--
第二,赋值运算符通常会将非const引用返回给被赋值的对象(*this)。
https://stackoverflow.com/questions/6734063
复制相似问题