2016-05-27 53 views
0

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;」

問題:我的錯在哪裏?我應該知道不要再犯這些錯誤?謝謝。

+3

指針'B *'未在A的構造函數中初始化。它指向未定義的區域。 – kennytm

回答

4

的問題是在這個類:

class A 
{ 
public: 
    B* b; 

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

你提領b但您尚未創建的B一個實例。

相關問題