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

關於class共用結構的問題....

尚未結案
linda_wei
一般會員


發表:44
回覆:31
積分:20
註冊:2004-04-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-25 10:07:46 IP:211.75.xxx.xxx 未訂閱
****我有一個class class CMemberManage { private: public: CMemberManage(); virtual ~CMemberManage(); _MemberData m_memberlist[500]; void AddMemberForm(); void UpdateMemberForm(); int Save(int type, int iID); }; void CMemberManage::AddMemberForm() { Form2->Show(); } void CMemberManage::UpdateMemberForm() { Form3->Show(); } int CMemberManage::Save(int type, int iID) { int x=-1; switch(type) { case 1: if(m_memberlist[iID].memberNo==0) { //Save_Append(iID); int t1=0,t2=0,t3=0,t4=0; if(Form2->ComboBox2->ItemIndex<=31) t1=Form2->ComboBox2->ItemIndex 1; else t1=Form2->ComboBox2->ItemIndex 3; if(Form2->ComboBox3->ItemIndex<=31) t2=Form2->ComboBox3->ItemIndex 1; else t2=Form2->ComboBox3->ItemIndex 3; if(Form2->ComboBox4->ItemIndex<=31) t3=Form2->ComboBox4->ItemIndex 1; else t3=Form2->ComboBox4->ItemIndex 3; if(Form2->ComboBox5->ItemIndex<=31) t4=Form2->ComboBox5->ItemIndex 1; else t4=Form2->ComboBox5->ItemIndex 3; m_memberlist[iID].camera1_presentno=t1; m_memberlist[iID].camera2_presentno=t2; m_memberlist[iID].camera3_presentno=t3; m_memberlist[iID].camera4_presentno=t4; m_memberlist[iID].memberNo=Form2->ComboBox1->ItemIndex 1; strcpy(m_memberlist[iID].name,Form2->Edit1->Text.c_str()); x=0; } break; } return x; } ****我有Form1, Form2............... ****在form1裡 class TForm1 : public TForm { __published: // IDE-managed Components TLabel *Label1; TButton *Button1; TButton *Button2; TButton *Button3; void __fastcall Button1Click(TObject *Sender); void __fastcall Button3Click(TObject *Sender); void __fastcall Button2Click(TObject *Sender); private: // User declarations CMemberManage A_class; public: // User declarations __fastcall TForm1(TComponent* Owner); }; ****在form1裡按下button1 void __fastcall TForm1::Button1Click(TObject *Sender) { Form1->Enabled=false; A_class.AddMemberForm(); } ****在form1裡按下button2 void __fastcall TForm1::Button3Click(TObject *Sender) { Form1->Enabled=false; A_class.UpdateMemberForm(); } ****問題來了, 我在Form2裡新增一筆記錄在m_memberlist[4]裡... 但是當我開出Form3時, 這筆記錄卻不見了...為什麼?!
zcecil
初階會員


發表:0
回覆:28
積分:45
註冊:2003-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-25 10:20:18 IP:220.130.xxx.xxx 未訂閱
這還要看你form2 form3的動作才能確定. 不過我猜應該是form2和form3裡用到的CMemberManage不是同一個instance, 所以是存取到各自的物件去了吧.
jim1247
一般會員


發表:8
回覆:20
積分:5
註冊:2003-01-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-25 10:49:11 IP:59.120.xxx.xxx 未訂閱
因為你把該class宣告在Form1的Private區段
 
  private: // User declarations
  CMemberManage A_class;
所以只有Form1能使用它 當你Form2.3就算include Form1.h,一樣不能使用 我猜你每個Form都有宣告1次吧? 這樣變成每個Form都有各自的A_class 把宣告那行放到Public後 然後在Form2.3 各自include Form1.h 因為在Form1已經宣告了, 所以Form2.3不用再宣告 在Form2.3使用A_class時, 要寫成 Form1.A_class
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-25 14:26:08 IP:210.68.xxx.xxx 未訂閱
linda_wei您好:    PO程式碼的方式與版規說明請參考下面連結,煩請修改謝謝您的配合 >
系統時間:2024-05-12 3:24:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!