所以,假设我有一个基类,如下所示:
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
时销毁它。
此外,您的问题中有一个声明,但没有定义。这可能很糟糕(但是,编译器应该抱怨)。