joycat
一般會員

 發表:4 回覆:6 積分:2 註冊:2004-02-23
發送簡訊給我
|
小弟不知道該怎麼從 搜尋中 找到 這樣子問題的答案
如果 哪有解決方式,煩請順便 將 搜尋關鍵字列出~感謝
若是發錯討論版,煩請見諒 ,不知道這個問題該放哪個分類 小弟 寫了 兩個物件 ,分別是 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
發送簡訊給我
|
抱歉~ 已經找到問題點了
改成如下即可
<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>
|