作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題Re: [問題] include
時間Sat Jun 19 01:30:34 2010
//a.h
#ifndef A_H
#define A_H
class B;
class A
{
public:
A();
void print(){}
private:
B* _b;
};
#endif
//b.h
#ifndef B_H
#define B_H
class A;
class B
{
public:
B(){}
B(A* ptr);
private:
A* _a;
}
;
#endif
//a.cpp
#include "a.h"
#include "b.h"
A::A(){_b = new B(this);}
//b.cpp
#include "a.h"
#include "b.h"
B::B(A* ptr){
_a = ptr;
_a->print();
}
主要就是不要讓他該看到class 宣告時 你卻讓他看不到
你一開始把function定義寫再a.h 用到了type B 卻只給他看class B;這名字
沒看到內容
所以才不過
上面這樣改是OK....但總覺得不是個好的設計耶
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.86.31
推 rockwalking:XD 真的是很爛的設計 06/19 01:32
→ rockwalking:但是已經寫成這樣了就懶得重新改寫架構 06/19 01:33
→ QQ29:主要是怕AB之間牽扯太深 改B,A行為可能會發生問題 搞的半死 06/19 01:37
→ tinlans:這種狀況在使用 visitor pattern 的時候還不算少見, 06/19 06:29
→ tinlans:最大的缺點就是你改一邊的 class 定義幾乎就是整個重編。 06/19 06:29
→ tinlans:解決這種編譯期相依性的方法往往都會吃到執行期的 CPU。 06/19 06:35
→ tinlans:所以最好從程式架構的設計上著手。 06/19 06:36