我已经为任意模型实现了一个类,如下所示
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
类的指针。
然而,这根本不起作用。你能帮我解决一下错在哪里吗?
答案 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
}
您可以根据需要在课堂内定义您的操作员功能......