const错误消息

时间:2009-12-11 11:23:39

标签: c++

此错误消息的含义是什么: 错误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;} 

4 个答案:

答案 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
}