如何在一個.cpp檔中使用.h檔內的類別物件(C++) |
答題得分者是:RaynorPao
|
sursur
一般會員 發表:7 回覆:5 積分:2 註冊:2002-10-25 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: //abc.h #include "test.cpp" class A{ ... }; class B{ private: A obj; }; //test.cpp #include "abc.h" 請問在test.cpp這檔案裡面要怎麼樣宣告才能使用obj這個物件如果你能夠更改 class B 的話 (1)把 A obj 的宣告放在 public 就可以直接存取 obj 了 // abc.h class A { ........ }; class B { private: public: A obj; }; // test.cpp #include "abc.h" ............... B *xxx=new B; xxx->obj..... delete xxx; ............... (2)A obj 仍然宣告在 private 但是另外宣告及實作兩個 method GetObj, SetObj 就可以使用 obj 了 // abc.h class A { ........ }; class B { private: A obj; public: A* GetObj(); void SetObj(A*); }; //abc.cpp A* B::GetObj() { .............. } void B::SetObj(A* yyy) { .............. } // test.cpp #include "abc.h" ............... B *xxx=new B; A *yyy=NULL; yyy=xxx->GetObj(); yyy...... xxx->SetObj(yyy); ............. delete xxx; ...............
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
sursur
一般會員 發表:7 回覆:5 積分:2 註冊:2002-10-25 發送簡訊給我 |
謝謝你…這個方法解決了我的問題…
但是,我卻另外出現了一個錯誤訊息:
main.obj : error LNK2001: unresolved external symbol "public: __thiscall Borrowb::Borrowb(class String,class String)" (??0Borrowb@@QAE@VString@@0@Z)
Debug/library.exe : fatal error LNK1120: 1 unresolved externals 不知道是為什麼?可以幫我一下嗎?謝謝…
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 謝謝你…這個方法解決了我的問題… 但是,我卻另外出現了一個錯誤訊息: main.obj : error LNK2001: unresolved external symbol "public: __thiscall Borrowb::Borrowb(class String,class String)" (??0Borrowb@@QAE@VString@@0@Z) Debug/library.exe : fatal error LNK1120: 1 unresolved externals 不知道是為什麼?可以幫我一下嗎?謝謝…這是 link error 建議你檢查你所有自己寫的 code 是否都有正確的使用 #include 另外~~如果你有使用其他的 lib 也要記得~~加入到你的 project
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
sursur
一般會員 發表:7 回覆:5 積分:2 註冊:2002-10-25 發送簡訊給我 |
不好意思,仍是宣告的問題,因為我得在.h檔中,將A obj宣告為private,
但在MAIN()中,我要用到這個物件時,是將它放在陣列中,這樣大概不清楚,我將程式大概內容寫在下面: //abc.h
#include "test.cpp"
class A{
...
};
class B{
private:
A obj1;
A obj2;
}; //test.cpp
#include "abc.h"
main()
{
B B1[3]={(...),(...)......}
int i=0; for(i=0;i<3;i )
{
B1[i].obj1=....;
B1[i].obj2=....;
}
} 若改成這樣的話,我需要怎樣宣告obj1跟obj2,才能在main()中使用呢?
請幫幫我,謝謝~~~~~感激不盡!
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 不好意思,仍是宣告的問題,因為我得在.h檔中,將A obj宣告為private, 但在MAIN()中,我要用到這個物件時,是將它放在陣列中,這樣大概不清楚,我將程式大概內容寫在下面: //abc.h #include "test.cpp" class A{ ... }; class B{ private: A obj1; A obj2; }; //test.cpp #include "abc.h" main() { B B1[3]={(...),(...)......} int i=0; for(i=0;i<3;i ) { B1[i].obj1=....; B1[i].obj2=....; } } 若改成這樣的話,我需要怎樣宣告obj1跟obj2,才能在main()中使用呢? 請幫幫我,謝謝~~~~~感激不盡!(1)你的 abc.h 中不需要再「#include "test.cpp"」 (2)把 class B 中的 obj1, obj2 宣告在 public 下
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
sursur
一般會員 發表:7 回覆:5 積分:2 註冊:2002-10-25 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 不行啦~~我的obj1,obj2一定得放在private中,老師規定的說~~ 謝謝你~~~~醬子啊~~ 那就必須使用我一開始告訴你的第 class="code"> public: A* GetObj(void) {return(&obj);}; 然後在你的 main 中可以這樣寫 A* a=NULL; B b[3]; int i=0; for(i=0; i<3; i ) { a=b[i].GetObj(); a->.....; }備註:我是用比較簡單的寫法~~希望對你有用 不過~~我建議你有空去書局裡逛逛 這些書裡都有寫的
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |