重写类函数并调用它,尽管它是作为基类处理的
override class function and call it though it is handled as its base class
所以,假设我有一个基类,如下所示:
class Whatever
{
virtual void Execute() = 0;
};
我得到了一个实现Whatever
:的类
class WhateverImplementation : public Whatever
{
virtual void Execute();
}
还有其他类别:
class Container
{
private:
Whatever *m_whatever;
public:
void setWhatever(Whatever *whatever)
{
m_whatever = whatever;
}
}
并且我调用CCD_ 2,线程在调用CCD_ 3时抛出分段错误。
WhateverImplementation
需要是Whatever
的子类才能工作,但您的代码并不能反映这一点。我有点惊讶你的编译器没有对此抱怨。
尝试
class WhateverImplementation : virtual Whatever
{ .... };
(或者其他代替virtual
的东西,例如public
。在这里解释你需要什么可能有点多。)
此外,你确定你在Container
实例上工作吗,比如
Container mycontainer();
mycontainer.setWhatever(new WhateverImplementation);
此外,您在不使用任何delete
的情况下使用new
,这让我怀疑您可能正在构建内存泄漏,因此请确保在不再需要m_whatever
时销毁它。
此外,您的问题中有一个声明,但没有定义。这可能很糟糕(但是,编译器应该抱怨)。
相关文章:
- std::具有相同基类的类的变体
- 使用对象的基类部分模板专用化对对象进行哈希处理::哈希
- 在同时处理基类的多个指针时如何处理多态性?
- 如何处理参数中的基类和指针变量
- 使用 enable_if 专门处理基类的返回类型
- 编译器如何处理基类破坏者在派生的破坏者中调用
- 如何使派生类的流式处理运算符也输出基类
- 如何使继承相同基类的类的虚拟方法弄清楚如何处理它们的参数?
- 处理C++中基类的重写方法的异常
- SWIG:在派生类中处理基类重载方法
- 在模板类中,如何处理基类的未指定对象的数组
- 重写类函数并调用它,尽管它是作为基类处理的
- 使用基类而不是基指针来处理派生类
- 将抽象基类作为成员处理时的所有权问题
- c++处理跨超/基类的函数指针
- 如何处理基类函数已经重载不同访问权限时的名称隐藏问题
- c++:为什么可以编译?(处理this-Reference到基类)
- 用于智能指针(intrusive_ptr)的抽象基类-处理继承性、多态性、可克隆性和从工厂返回的方法
- 事件处理:当接收者期望派生类时,从基类发送事件
- c++基类中的异常处理