Допустим, у меня есть этот пример шаблона:
template<class T>
class Wrapper
{
virtual T* ReturnPtr() = 0;
};
И тогда я наследую от этого:
class Buffer; //some class
class BufferWrapper : public Wrapper<Buffer>
{
virtual Buffer* ReturnPtr(); //<< (1.)
}
Intellisense показывает это сообщение, когда вы звоните неconst
функция на объекте, который является const
, Как мы можем видеть, ReturnPtr
неконстантен. Как правило, вы можете увидеть это сообщение по двум причинам. Во-первых, когда вы пытаетесь позвонить ReturnPtr
на const
тип объекта BufferWrapper
:
const BufferWrapper bw;
bw.ReturnPtr(); // Can't call non-const member function on const object
Второй, когда ваш BufferWrapper
Объект является членом данных класса, и вы звоните ReturnPtr
на это изнутри const
функция-член этого класса:
struct SomeClass
{
BufferWrapper bw;
void SomeClass::SomeFunc() const
{
bw.ReturnPtr(); // Cannot call non-const member function here
}
}
Других решений пока нет …