現在有兩個class 互相使用對方的指標
我把全部的code 放在同一個檔案是可以編譯的
== 程式碼 ==
class B;
class A
{
B* b;
A方法的宣告
};
class B
{
A* a;
B方法的宣告
};
A方法的實作
B方法的實作
== 換成.h 後 ==
A.h:
#pragma once
#include "B.h"
class A
{
B* b;
A方法的宣告
};
B.h:
#pragma once
class A;
class B
{
A* b;
B方法的宣告
};
A.cpp:
#include "A.h"
A方法的實作
B.cpp:
#include "B.h"
B方法的實作
====
標頭檔編譯不能的錯誤訊息是:使用未定義的型別 A
請問該如何修改才能使標頭檔順利編譯?
PS:A方法會呼叫B方法或屬性
B方法會呼叫A方法或屬性
====
解決方法1 by LPH66:
在.cpp中兩個.h都#include進來
解決方法2 by adrianshum (Alien):
a.h:
#pragma once
class B; //forward declaration
#include "b.h"
class A {
private:
B* b;
};
b.h:
#pragma once
class A; //forward declaration
#include "a.h"
class B {
private:
A* a;
};
沒有留言:
張貼留言