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

請問vector的運算子怎麼重新定義?

尚未結案
poom
一般會員


發表:1
回覆:1
積分:0
註冊:2004-12-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-04 13:53:01 IP:203.70.xxx.xxx 未訂閱
請問如果是下列的情況,我該如何重新定義operator ”>”,”<”,”=”呢?    首先我先自定了一個class A
class A{
public:
        int Num;
        A(){;};
        ~A(){delete this;};
        bool operator> (const A& temp){
                return ((*this).Num > temp.Num);
        }
        bool operator< (const A& temp){
                return ((*this).Num < temp.Num);
        }
};
這是第二個定義的class ALIST
class AList :public vector{
public:
        AList(){;}
        ~AList(){;}
};
以下是我的main function
int main(int argc, char* argv[])
{
        AList List;            A *aaa = new A;
        A *bbb = new A;            List.push_back(aaa);
        List.push_back(bbb);            List[0]->Num = 10;
        List[1]->Num = 2;            ShowMessage(IntToStr(List[0]->Num));
        ShowMessage(IntToStr(List[1]->Num));            if(List[0]>List[1]){
                cout<<"a > b "<    目前不管輸入什麼值,判斷出來的都是false;
請問我該怎麼在AList定義operator讓這程式能執行正確呢?     
        
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-04 21:55:56 IP:221.169.xxx.xxx 未訂閱
        if(List[0]>List[1]){
這一段程式碼 List[0] 和 List[1] 都只有取出型態 A* 的值(也就是指標值) 要比較型態為A的值,你應該這麼做
        if(*(List[0])>*(List[1])){
poom
一般會員


發表:1
回覆:1
積分:0
註冊:2004-12-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-05 10:17:55 IP:203.70.xxx.xxx 未訂閱
引言:
        if(List[0]>List[1]){
這一段程式碼 List[0] 和 List[1] 都只有取出型態 A* 的值(也就是指標值) 要比較型態為A的值,你應該這麼做
        if(*(List[0])>*(List[1])){
謝謝,我實在是搞不懂指標的用法 那如果我想要簡化成 if(List[0]>List[1]){ 這樣的用法, 也就是不用加上取值運算子就能夠使用 我定義的operator該如何修改呢
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
系統時間:2024-05-19 18:52:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!