6

我有以下课程:

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

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

当我使用时,inner->doSomething()我得到一个分段错误。我应该怎么做才能打电话inner->doSomething()到B班?

提前致谢。

4

2 回答 2

9

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

A 的适当构造函数如下

protected:
A() : inner(NULL) {
  ...
}
于 2009-09-30T15:17:43.573 回答
4

但是,如果您将 A* 分配为与初始化此指针的 B 相同,您将获得堆栈溢出...您需要内部的任何原因?你不能直接调用 A::DoSomething() 吗?

于 2009-09-30T15:22:54.870 回答