如何将纯虚拟方法从模板调整为从模板继承的类
How do I adapt a pure virtual method from a template to the class that inherits from it?
假设我有这个示例模板:
template<class T>
class Wrapper
{
virtual T* ReturnPtr() = 0;
};
然后我继承了它:
class Buffer; //some class
class BufferWrapper : public Wrapper<Buffer>
{
virtual Buffer* ReturnPtr(); //<< (1.)
}
- 这是正确的方法吗?当我这样写的时候没有给我任何intellisense错误,但一旦我编写ReturnPtr()在某个地方,它告诉我"对象的类型限定符不是与成员功能兼容"
- 这是否意味着不可能使用这样的虚拟方法
Intellisense在对const
对象调用非const
函数时显示该消息。正如我们所看到的,ReturnPtr
是非常数。您可能会看到此消息,通常有两个原因。第一种是当您试图在类型为BufferWrapper
:的const
对象上调用ReturnPtr
时
const BufferWrapper bw;
bw.ReturnPtr(); // Can't call non-const member function on const object
第二种情况是当您的BufferWrapper
对象是一个类的数据成员,并且您正在从该类的const
成员函数中对其调用ReturnPtr
时:
struct SomeClass
{
BufferWrapper bw;
void SomeClass::SomeFunc() const
{
bw.ReturnPtr(); // Cannot call non-const member function here
}
}
相关文章:
- 继承函数的重载解析
- 为char数组调整zlib-zpipe
- 继承期间显示未知行为的子类
- 调整大小后指向元素值的指针unordered_map有效?
- 头文件-继承c++
- 为什么在保护模式下继承升级不起作用
- 通过继承类使用来自不同命名空间的运算符
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 在C++中调整向量中的索引
- 混合组合和继承的C++问题
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 从类继承时,继承的类是否会通过父类重新定义继承的变量
- 公共与私人继承
- 如何创建从同一类继承的不同对象的向量
- 指针调整没有多重继承
- 继承自定义选项卡栏和调整大小事件的实现
- C++使用继承来调整算法
- 我是否应该期望单个继承中的向上转换和向下转换不会调整指针?
- 调整QT中从QWindow继承的另一个类中的事件大小
- 如何将纯虚拟方法从模板调整为从模板继承的类