hello
I'm learning how to use operators:
this code compiles and works fine.
Code:
struct Item {
int data;
Item (const int value = 0) { data = value; }
Item operator+ (const Item &item) {
Item result (data + item.data);
return result;
}
Item operator* (const Item &item) {
Item result (data * item.data);
return result;
}
};
But if I want to make data private...
Code:
class Item {
private:
int data;
public:
Item (const int value = 0) { data = value; }
int & Data () { return data; }
Item operator+ (const Item &item) {
Item result (data + item.Data ());
return result;
}
Item operator* (const Item &item) {
Item result (data * item.Data ());
return result;
}
};
int main () {
Item a (3);
Item b (4);
Item c;
c = a + b * a;
return 0;
}
I get:
error: passing ‘const Item’ as ‘this’ argument of ‘int& Item::Data()’ discards qualifiers
what does it mean?
thanks