我有一个类 orders,它的实例存储在 QMap/Map 中,并且有一个 Key:int, value:order 模式。一切都很顺利,直到我开始遍历地图并访问类的函数。首先,我尝试使用它的 getter 方法打印出订单对象的值,例如:
orderSet.value(i).getDate().toString("dd/MM/yyyy");
//OrderSet is my map
然而,这产生了一个错误
error: passing 'const order' as 'this' argument of 'QDate order::getDate()' discards qualifiers [-fpermissive]
然后我通过在 getter 方法中添加“const”来解决这个问题,前一行代码将成功运行并将对象日期打印为字符串。
但是现在的问题是我无法实现我的 setter 方法,因为我会得到同样的错误,而且显然 setter 方法有一行改变了原始成员变量,所以这本身就会违反常量规则,所以我怎样才能改变对象地图中的变量??
如果有帮助,这是我的代码:
class order
{
QDate dateOrdered;
int totOrders;
double totValue;
public:
order();
order(QDate,int,double);
//Sets
void setDate(QDate); //Cant add const since values are being altered
void setOrderTot(int);
void setValueTot(double);
//Gets
QDate getDate() const; //Adding const solved these methods
int getOrderTot()const;
double getValueTot()const;
};
#endif // ORDER_H