我有一个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);
}
答案 0 :(得分:3)
您正尝试从const(bool ReadCounterFile(void*)
)调用非const成员函数(void bar() const
)。这打破了const的正确性,是不允许的。
您必须制作ReadCounterFile
const
或将bar()
设为非const。
答案 1 :(得分:2)
由于bar
被标记为const
,所以它可以做的就是调用标记为const
的其他函数 。这是为了确保您不会修改任何内容。
答案 2 :(得分:0)
从作为常量的bar()函数,你调用一个非常量函数ReadCounterFile(),这是不允许的