Reputation:
what does this error message mean : error C2662: 'addDoctor' : cannot convert 'this' pointer from 'const class Clinic' to 'class Clinic &' I'm not using const though
sorry,but this is my first time posting experience
Clinic.h
class Clinic{
public:
Clinic();
int addDoctor(Doctor*);
private:
Doctor doctors[10];
int d;
};
Clinic.cpp
Clinic::Clinic()
{d=-1;}
int Clinic::addDoctor(Doctor *x)
{d++;doctors[d]=x;return d;}
Upvotes: 1
Views: 733
Reputation: 73493
That means you are trying to call non-const member function addDoctor
from a const member function.
EDIT: In the newly posted code, you have an array of Doctor
objects but you are trying to put an pointer into that array. That will give an error like can not convert from Doctor*
to Doctor
Upvotes: 1
Reputation: 35490
MSDN example
// C2662.cpp
class C {
public:
void func1();
void func2() const{}
} const c;
int main() {
c.func1(); // C2662
c.func2(); // OK
}
Upvotes: 0
Reputation: 62333
It means you are calling addDoctor on a const this without the function call being a const.
The variable you are calling addDoctor on needs to NOT be const.
Edit: A const member function looks like this:
class MyClass
{
public:
void MyNonConstFunction();
void MyConstFunction() const;
};
const guarantees that you don't change anything inside the class. I assume with addDoctor that is not the case.
Most likely you have something like the following
const Object obj;
obj.addDoctor();
This will break. If you do:
Object obj;
obj.addDoctor();
Things will work. Of course this gets more complex if you are calling it on the const return from a function. If this is the case you need to get that object a different way.
Upvotes: 2
Reputation: 26863
You have a const object and you are trying to call non const member function. All errors are documented.
Upvotes: 3