Hi, I wrote a simplified version of a program I was having a problem with, to better illustrate my questions:
1. How do I bypass this error?
2. What is the exact cause?
Code:
#include <iostream>
using namespace std;
class Stuff {
public:
Stuff();
Stuff(int);
Stuff(const Stuff&);
int accessor();
void mutator(int);
private:
int mystery;
};
Stuff::Stuff(): mystery(0) {}
Stuff::Stuff(int b): mystery(b) {}
Stuff::Stuff(const Stuff& b)
{
mystery = b.accessor();
}
int Stuff::accessor() { return mystery; }
void Stuff:: mutator(int b) { mystery = b; }
int main()
{
Stuff fool;
cout << fool.accessor() << endl;
return 0;
}
and the error that spits out:
Code:
bash-3.00$ !g
g++ test.c
test.c: In copy constructor `Stuff::Stuff(const Stuff&)':
test.c:20: error: passing `const Stuff' as `this' argument of `int Stuff::accessor()' discards qualifiers
bash-3.00$
Thanks dudes.