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

檢驗時發生連結錯誤!

尚未結案
Frances3399
一般會員


發表:13
回覆:16
積分:5
註冊:2003-10-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-29 21:08:40 IP:163.18.xxx.xxx 未訂閱
Sorry 又來求救了 程式功能: 把Sim_01的部分錢轉到Sim_02 還要check錢夠不夠傳! 懇請各位先進賜教!! =========== 錯誤訊息: [Linker Error] Unresolved external 'BankAccount::save' referenced from C:\C \test.OBJ [Linker Error] Unresolved external 'BankAccount::yn' referenced from C:\C \test.OBJ 我看不出我哪裡有錯阿!! =========== 程式內容
#include     using std::cout;    using std::cin;    using std::endl;        class BankAccount{        private:            char* name;            int saving;        public:            static int save;
        static int yn;            BankAccount(char* str, int money){                name = str;
            saving = money;
            save=saving;            }            void deposit(int money){                saving  = money;            }            int withdraw(int money){                saving -= money;                return saving;            }            void query(){                cout << "帳戶姓名:" << name << endl;                cout << "帳戶餘額:" << saving << endl;            }    };    class ExBankAccount : public BankAccount{        public:            ExBankAccount(char* str, int money):BankAccount(str, money){            }            void transfer(BankAccount *A, int money)
        {
                if(yn==1)
                {
                withdraw(money);
                A->deposit(money);
                }
        }
};    class EExBankAccount : public ExBankAccount{        public:            EExBankAccount(char* str, int money):ExBankAccount(str, money){            }            void check(BankAccount A, int money)
        {
                if(save>=money)
                {
                        yn=1;
                }
                else
                {
                        yn=0;
                }
        }    };    void main()    {
    int I,J,M;
    cout << "Insert a money for Sim_01, please :" ;
    cin >> J;
    cout << "Insert a money for Sim_02, please :" ;
    cin >> M;
    cout << "Insert a number of transfer, please :" ;
    cin >> I;
    EExBankAccount Sim_01("Sim_01", J);        EExBankAccount Sim_02("Sim_02", M);        Sim_01.check (Sim_02, I);
    Sim_01.transfer (&Sim_02, I);        Sim_01.query();        Sim_02.query();    }
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-30 00:47:17 IP:218.165.xxx.xxx 未訂閱
Frances3399您好 問題便是出在基礎類別BankAccount的成員static int save與static int yn, 在類別內宣告static則在物件產生之前已配置記憶體,也就是說他們不屬於個別 物件所有,而是物件共用的... 而這二個變數主要是Sim_01用來判斷轉出的錢是否合理...因此不需static, 只要在物件生成時再產生就可以了...     
 類別宣告
class BankAccount{        private:            char* name;            int saving;        public:            int save;//去掉static
        int yn;//去掉static            BankAccount(char* str, int money){                name = str;
            saving = money;
            save=saving;            }            void deposit(int money){                saving  = money;            }            int withdraw(int money){                saving -= money;                return saving;            }            void query(){                cout << "帳戶姓名:" << name << endl;                cout << "帳戶餘額:" << saving << endl;            }    };
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
Frances3399
一般會員


發表:13
回覆:16
積分:5
註冊:2003-10-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-30 01:02:16 IP:163.18.xxx.xxx 未訂閱
由衷感謝各位先進幫忙!! 謝謝!!
系統時間:2024-05-18 17:53:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!