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

如何透過 function 去存取自己動態新增的物件

缺席
joycat
一般會員


發表:4
回覆:6
積分:2
註冊:2004-02-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-30 01:34:52 IP:59.125.xxx.xxx 訂閱
小弟不知道該怎麼從 搜尋中 找到 這樣子問題的答案
如果 哪有解決方式,煩請順便 將 搜尋關鍵字列出~感謝
若是發錯討論版,煩請見諒 ,不知道這個問題該放哪個分類
小弟 寫了 兩個物件 ,分別是ADcomm 和ADLineStat
ADcomm 中 會動態新增 ADLineStat, 並且 丟到 map中存放
程式碼如下:
<textarea class="cpp" rows="10" cols="60" name="code"> typedef map ADLineStat_map; class ADcomm { public: bool ADD_line(AnsiString LineName); bool Find_Line(AnsiString LineName); ADLineStat LineStat(AnsiString LineName); int line_count; private: ADLineStat_map LineStat_map; ADLineStat_map::iterator pos; }; //--------------------------------------------------------------------------- //-- bool ADcomm::Find_Line(AnsiString LineName){ pos=LineStat_map.find(LineName); if(pos != LineStat_map.end()) {return true;} else {return false;} } //--------------------------------------------------------------------------- // 動態建立ADLineStat ,並放到 LineStat_map 儲存 bool ADcomm::ADD_line(AnsiString LineNumber){ AnsiString name; name = (AnsiString) LineNumber; ADLineStat *ADLineStatTmp=new ADLineStat; if(LineStat_map.insert(make_pair(name,ADLineStatTmp)).second) { line_count ; return true; } else { delete ADLineStatTmp; return false; } } //--------------------------------------------------------------------------- ADLineStat* ADcomm::LineStat(AnsiString LineName){ ADLineStat *ADLineStatTmp2=new ADLineStat; pos=LineStat_map.find(LineName); if(pos != LineStat_map.end()) { delete ADLineStatTmp2; return pos->second ; } else {return ADLineStatTmp2; } } //--------------------------------------------------------------------------- void ADcomm::ProcPackage(char Buf[128],int length){ if(IntToHex(Buf[0],2)=="AA"){ line_flag = IntToHex(Buf[1],2); if(!Find_Line(line_flag)) ADD_line(line_flag); } // 這邊就不知道該如何完成了 // 方法1 ?? ADcomm.LineStat(line_flag).ProcPackage(Buf,int length); // 方法2 ?? // ADLineStat *ADLineStatTmp = LineStat(line_flag); // ADLineStatTmp.ProcPackage(Buf,length); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- class ADLineStat { public: AnsiString Caller_in_ID; //來電顯示號碼 AnsiString Caller_out_ID; //去電顯示號碼 int CallerID_length; void ProcPackage(char Buf[128],int length) ; } void ADLineStat::ProcPackage(char Buf[128],int length) { // 做一些動處理動作 } </textarea>

希望能透過 某個 function 回傳這個物件,並且用他處理些動作,這部分 一值出錯,
請問 該怎麼 寫才正確....




joycat
一般會員


發表:4
回覆:6
積分:2
註冊:2004-02-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-30 01:45:58 IP:59.125.xxx.xxx 訂閱
 抱歉~ 已經找到問題點了 

改成如下即可

<textarea class="cpp" rows="10" cols="60" name="code"> void ADcomm::ProcPackage(char Buf[128],int length){ if(IntToHex(Buf[0],2)=="AA"){ line_flag = IntToHex(Buf[1],2); if(!Find_Line(line_flag)) ADD_line(line_flag); } ADLineStat *ADLineStatTmp ; ADLineStatTmp = LineStat(line_flag); ADLineStatTmp->ProcPackage(Buf,length); }</textarea>
系統時間:2024-05-05 18:23:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!