我有一个类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编译.
您没有Outer在Inner构造函数中存储指向类的指针:
Inner(Outer *parent) : parent(parent) {}
Run Code Online (Sandbox Code Playgroud)
此外,如果您使用C++ 11,这可能是使用智能指针的好例子.
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |