代码之家  ›  专栏  ›  技术社区  ›  marcosbeirigo

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

  •  6
  • marcosbeirigo  · 技术社区  · 15 年前

    我有以下课程:

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

    当我使用 inner->doSomething() 我有一个分割错误。 我该怎么打电话 内剂量测量( 在B班?

    事先谢谢。

    2 回复  |  直到 11 年前
        1
  •  9
  •   JaredPar    15 年前

    如果没有对成员内部进行显式初始化,它可能既不是空的,也指向无效的内存。你能给我们看一下显式初始化内部的代码吗?

    a的适当构造函数如下

    protected:
    A() : inner(NULL) {
      ...
    }
    
        2
  •  4
  •   Goz    15 年前

    不过,如果将a*指定为与初始化了b的指针相同,则会出现堆栈溢出…你为什么需要内心?你不能只调用一个::dosomething()?

    推荐文章