インスタンス化されたインスタンスがQMap/Mapに格納され、Key:int、value:orderパターンを持つクラスordersがあります。マップを反復処理してクラスの関数にアクセスし始めるまで、すべてがうまくいきました。最初に、たとえば次のgetterメソッドを使用してorderオブジェクトの値を出力しようとしました。
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