C ++在子类中调用虚方法

时间:2009-09-30 15:14:36

标签: c++ virtual-method

我有以下课程:

class A {
protected:
     A *inner;
public:
    ....
    virtual void doSomething() = 0;
    ....
}

class B: public A {
   ...
   void doSomething() {
       if(inner != NULL)
           inner->doSomething();
   }
   ...
}

当我使用inner->doSomething()时,我遇到了分段错误。 我应该怎么做才能在B班打电话给inner->doSomething()

提前感谢。

2 个答案:

答案 0 :(得分:9)

如果没有成员内部的显式初始化,它可能既不是NULL也不是指向无效的内存。你能告诉我们明确内部化的代码吗?

A的适当构造函数将是以下

protected:
A() : inner(NULL) {
  ...
}

答案 1 :(得分:4)

虽然如果你指定A *与B初始化这个指针相同,你会得到一个堆栈溢出...你需要内部的任何理由吗?你不能只调用A :: DoSomething()?