此错误消息的含义是什么: 错误C2662:'addDoctor':无法将'this'指针从'const class Clinic'转换为'class Clinic&' 我不是在使用const
抱歉,这是我第一次发帖经验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;}
答案 0 :(得分:3)
你有一个const对象,你试图调用非const成员函数。所有错误均为documented。
答案 1 :(得分:2)
这意味着你在const上调用addDoctor,而函数调用不是const。
您调用addDoctor的变量不需要是const。
编辑:const成员函数如下所示:
class MyClass
{
public:
void MyNonConstFunction();
void MyConstFunction() const;
};
const保证您不会更改类中的任何内容。我认为addDoctor并非如此。
您最有可能拥有以下内容
const Object obj;
obj.addDoctor();
这会破裂。如果你这样做:
Object obj;
obj.addDoctor();
事情会奏效。当然,如果你在函数的const返回上调用它会变得更复杂。如果是这种情况,您需要以不同的方式获取该对象。
答案 2 :(得分:1)
这意味着你试图从const成员函数中调用非const成员函数addDoctor
。
编辑:在新发布的代码中,您有一个Doctor
个对象数组,但是您正在尝试将指针放入该数组中。这会产生错误,例如无法从Doctor*
转换为Doctor
答案 3 :(得分:0)
MSDN示例
// C2662.cpp
class C {
public:
void func1();
void func2() const{}
} const c;
int main() {
c.func1(); // C2662
c.func2(); // OK
}