0

我有一个 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);

    }
4

3 回答 3

3

您正在尝试bool ReadCounterFile(void*)从 const one ( ) 调用非常量成员函数 ( void bar() const)。这破坏了 const 的正确性并且是不允许的。

您将不得不制作ReadCounterFile const或制作bar()非常量。

于 2013-07-29T08:13:48.340 回答
2

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

于 2013-07-29T08:14:34.140 回答
0

从 bar() 函数是一个常量,您正在调用一个非常量函数 ReadCounterFile(),这是不允许的

于 2013-07-29T08:15:54.747 回答