C/c++ Error C2663 Overloads Have No Legal Conversion for 'This' Pointer

这个错误很大可能是由 const 类型的变量调用了非const类型的函数。

例如:

class A
{
public:
    int size() {// return somthing};
};

class B
{
public:
     int getSize(const A& a)
     {
           // error. a是const类型,必须调用const function.
           return a.size()
     }
};

改为:

class A
{
public:
    int size() const 
    {
          // return something.
    }
};

class B
{
public:
     int getSize(const A& a)
     {
           // success
           return a.size()
     }
};

这样就没有错误了.