全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1502
推到 Plurk!
推到 Facebook!

如何在一個.cpp檔中使用.h檔內的類別物件(C++)

答題得分者是:RaynorPao
sursur
一般會員


發表:7
回覆:5
積分:2
註冊:2002-10-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-25 01:23:45 IP:219.68.xxx.xxx 未訂閱
//abc.h #include "test.cpp" class A{ ... }; class B{ private: A obj; }; //test.cpp #include "abc.h" 請問在test.cpp這檔案裡面要怎麼樣宣告才能使用obj這個物件
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-25 08:36:08 IP:203.73.xxx.xxx 未訂閱
引言: //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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-26 18:49:24 IP:219.68.xxx.xxx 未訂閱
謝謝你…這個方法解決了我的問題… 但是,我卻另外出現了一個錯誤訊息: 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-26 23:16:34 IP:61.221.xxx.xxx 未訂閱
引言: 謝謝你…這個方法解決了我的問題… 但是,我卻另外出現了一個錯誤訊息: 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-27 01:20:01 IP:219.68.xxx.xxx 未訂閱
不好意思,仍是宣告的問題,因為我得在.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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-10-27 01:27:29 IP:61.221.xxx.xxx 未訂閱
引言: 不好意思,仍是宣告的問題,因為我得在.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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-10-27 01:55:31 IP:219.68.xxx.xxx 未訂閱
(1)你的 abc.h 中不需要再「#include "test.cpp"」 (2)把 class B 中的 obj1, obj2 宣告在 public 下 [/quote] 不行啦~~我的obj1,obj2一定得放在private中,老師規定的說~~ 謝謝你~~~~
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-10-27 02:25:06 IP:61.221.xxx.xxx 未訂閱
引言: 不行啦~~我的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->.....;
   }
備註:我是用比較簡單的寫法~~希望對你有用 不過~~我建議你有空去書局裡逛逛 這些書裡都有寫的
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-04-24 17:15:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!