在const成员函数(C ++)中使用this指针

时间:2013-07-29 08:12:24

标签: c++ const

我有一个const成员函数bar我希望使用this指针来调用基类ClFoo的函数。

我收到编译错误,说:

'ClRDFoo::ReadCounterfile' : cannot convert 'this' pointer from 'const ClFoo' to 'ClRDLFoo &'   

这些是方法和类:

// ClFoo.cpp

int ClFoo::bar( void ) const
{
    int nCounter = 0;
    this->ReadCounterFile(&nCounter);
}

// ClFoo.h

class ClFoo : public ClRDFoo
{
protected: 

      int ClFoo::bar( void ) const;

}

// ClRDFoo.h

  class ClRDFoo 
    {

    protected:
         virtual bool ReadCounterFile(void *pBuffer);

    }

3 个答案:

答案 0 :(得分:3)

您正尝试从const(bool ReadCounterFile(void*))调用非const成员函数(void bar() const)。这打破了const的正确性,是不允许的。

您必须制作ReadCounterFile const或将bar()设为非const。

答案 1 :(得分:2)

由于bar被标记为const,所以它可以做的就是调用标记为const的其他函数 。这是为了确保您不会修改任何内容。

答案 2 :(得分:0)

从作为常量的bar()函数,你调用一个非常量函数ReadCounterFile(),这是不允许的