重载operator =用于类中的自定义类型

时间:2013-09-24 10:16:58

标签: c++ class operator-overloading

我已经为任意模型实现了一个类,如下所示

class model_lincommands : public QAbstractTableModel
{
    Q_OBJECT

    ...

private:
    QList<lin_display_role> datalist_display_roles_;
    QList<LIN_FRAME> datalist_frames_;
    QList<LIN_CMD> datalist_commands_;
};

此外,我有一个名为LIN_FRAME的自定义结构/类,它是单独定义的。

我的目标现在取决于键入的强制转换,以使= - 运算符超载,并为 datalist_frames _ 实现一个方便的复制功能,该功能来自QList<LIN_FRAME>类型。

model_lincommands中,我尝试了以下内容:

inline QList<LIN_FRAME> operator= (QList<LIN_FRAME> const& rhs)
{
    return this->datalist_frames_;
}

然后通过

调用它
QList<LIN_FRAME> tframe = *model;

*model是指向实例化的model_lincommands类的指针。

然而,这根本不起作用。你能帮我解决一下错在哪里吗?

2 个答案:

答案 0 :(得分:2)

您的操作员重载不正确。请尝试datalist_frames_ = rhs; return *this;而不是return this->datalist_frames_; 已修改

答案 1 :(得分:1)

看看这个:

// Operator overloading in C++
//assignment operator overloading
#include<iostream>
using namespace std;

class Employee
{
private:
int idNum;
double salary;
public:
Employee ( ) {
    idNum = 0, salary = 0.0;
}

void setValues (int a, int b);
void operator= (Employee &emp );

};

void Employee::setValues ( int idN , int sal )
{

salary = sal; idNum = idN;

}

void Employee::operator = (Employee &emp)  // Assignment operator overloading function
{
salary = emp.salary;
}

int main ( )
{

Employee emp1;
emp1.setValues(10,33);
Employee emp2;
emp2 = emp1;        // emp2 is calling object using assignment operator

}

您可以根据需要在课堂内定义您的操作员功能......