使用关键字this构造函数中的Segfault

时间:2016-05-27 14:31:39

标签: c++ segmentation-fault

A.H

#ifndef A_H
#define A_H

#include "B.h"

class A{
public:
    B* b;

A(){
    b->ownership = this;
};

};
#endif

B.h

#ifndef B_H
#define B_H

class A;

class B{
public:
    A* ownership;

};

#endif //B_H

的main.cpp

#include "A.h"

class C{
    A a1;
    A a2;
};

int main()
{

    C c;

    return 0;

}

命令:

g++ -g main.cpp -o main
./main

此程序因分段错误而失败 “gdb main core”告诉我错误在字符串中:“b-> ownership = this;”

问题:我的错在哪里?我应该知道不要犯更多这些错误?谢谢。

1 个答案:

答案 0 :(得分:4)

问题在于这个课程:

class A
{
public:
    B* b;

    A()
    {
        b->ownership = this;
    }
};

您要取消引用b,但尚未创建B的实例。