Re: [問題] 新手關於 #include 的問題
看板C_and_CPP (C/C++)作者littleshan (我要加入劍道社!)時間15年前 (2011/04/08 22:37)推噓2(2推 0噓 3→)留言5則, 2人參與討論串3/10 (看更多)
推
04/08 22:00,
04/08 22:00
→
04/08 22:00,
04/08 22:00
→
04/08 22:00,
04/08 22:00
※ 編輯: loveme00835 來自: 140.121.197.115 (04/08 22:02)
推
04/08 22:12,
04/08 22:12
→
04/08 22:13,
04/08 22:13
→
04/08 22:13,
04/08 22:13
沒那麼單純喔~
假設原本的 b.h 是這樣
b.h:
class B {
private:
A my_a_obj;
public:
void do_something(); // do something with my_a_obj;
};
然後 foo.cpp 用到 b.h
#include <a.h> // because B uses A as its member
#include <b.h>
void foo(){
B somb_b_obj;
some_b_obj.do_something();
}
目前看起來很 OK 可以用
過了一週 b.h 做了一些新功能,加入一個新的物件 C
class B {
private:
A my_a_obj;
C my_c_obj;
public:
void do_something(); // do something with my_a_obj
void do_something_else(); // do somethiing with my_c_obj
};
很不幸的,foo.cpp 雖然完全沒呼叫到新功能
也根本不知道 my_c_obj 的存在
但因為 B 物件的成員變了
所以你一定要在 foo.cpp 中去 include c.h
不然編不過去
甚至又過了一個月
現在我們發現 my_a_obj 的功能我們要移掉了
原本的 do_something() 可以完全由 my_c_obj 來取代
那麼 foo.cpp 是不是又要把 #include <a.h> 這一行拿掉?
即使他呼叫 do_something() 的方式完全都一樣
所以說
在 header 中引入 header 是必要的
照理來說 B class 若只有實作層次上的改變
那依賴它的 foo.cpp 應該也不需要修改
只需要重新編譯
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.87.243
推
04/08 22:41, , 1F
04/08 22:41, 1F
推
04/08 22:56, , 2F
04/08 22:56, 2F
→
04/08 22:56, , 3F
04/08 22:56, 3F
→
04/08 22:57, , 4F
04/08 22:57, 4F
→
04/08 22:58, , 5F
04/08 22:58, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 10 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章