当我尝试从嵌套类访问外部类的成员数据时,为什么会出现分段错误?

use*_*119 0 c++ nested-class

我有一个类Outer和一个嵌套类Inner.Inner有一个方法'print',它试图访问类Outer的数据成员.代码编译得很好,但是当我尝试运行程序时出现了分段错误错误.

#include <iostream>

class Outer{
public:
  Outer();
  ~Outer();

  class Inner{
  public:
    Inner(Outer *parent){}
    void print(){std::cout<< parent-> data <<std::endl;}
  private:
    Outer *parent;
  };
  Inner *obj;

private:
  int data;
};

Outer::Outer(): data(99), obj(new Inner(this)){}
Outer::~Outer(){delete obj;}

int main(){
  Outer outer;
  outer.obj->print();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不确定是什么问题,因为我已经将'this'指针传递给内部对象.

代码使用c ++ 11标志用g ++ 4.8.2编译.

Chr*_*ger 6

您没有OuterInner构造函数中存储指向类的指针:

Inner(Outer *parent) : parent(parent) {}
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用C++ 11,这可能是使用智能指针的好例子.