在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

上一篇: Creating an assignment (=) operator for class in C++

下一篇: operator<< overloading