線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:693
推到 Plurk!
推到 Facebook!

類別使用問題

尚未結案
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-15 19:50:48 IP:59.104.xxx.xxx 未訂閱
class Stock  // class declaration
{
private:
    char company[30];
    int shares;
    double share_val;
    double total_val;
    void set_tot() { total_val = shares * share_val; }
public:
    void acquire(const char * co, int n, double pr);
    void buy(int num, double price);
    void sell(int num, double price);
    void update(double price);
    void show();
};    // note semicolon at the end    int main()
{
    Stock stock1,stock2;
    stock1.buy(15, 18.25);        ......
    .......
    ...
}     
Stock宣告兩個物件分別是stock1 , stock2 請問我在主程式使用stock1物件呼叫stock::buy()函式成員中可以呼叫stcck2物件的其他函式成員嗎?? 例如: void stock::buy(xxxx) { stock1.acquire(xxxx);可以這樣呼叫嗎?? } 或是 例如: void stock::buy(xxxx) { stock2.acquire(xxxx);//不同物件的函式成員可以這樣呼叫嗎?? } 或是可以透過什麼方式達成嗎 ?? 謝謝 發表人 - syao 於 2005/07/15 21:10:25 發表人 - syao 於 2005/07/15 21:11:44 發表人 - syao 於 2005/07/15 21:14:51 發表人 - syao 於 2005/07/15 21:20:05
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-15 21:11:47 IP:211.22.xxx.xxx 未訂閱
syao兄可能對類別的封裝鑽研不深才有如此問題吧? 第1個問題是可以。 第2個問題,可以或不可以,要看stock2的成員函式是PUBLIC或是PRIVATE。 目前我只能暫時先這樣告知,因為如果要把類別封裝的存取規則打完,那可能要打上幾千字,建議把C++類別書裡的那章節研讀一下。 ------------------- 學,然後知不足。
psl
一般會員


發表:6
回覆:30
積分:7
註冊:2003-06-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-16 00:50:46 IP:220.129.xxx.xxx 未訂閱
syao 你好 以下是一個我寫來測試的例子 給你參考一下    
class A
{
private:
    string m_name;
public:
    A(string _name){ m_name = _name; };
    void SayHello() { cout << m_name << " say hello " << endl; };
    friend SayByInstance(A& i) { i.SayHello(); };
};    int main(int argc, char* argv[])
{
    A x("X"), y("Y");        x.SayHello();
    y.SayHello();        SayByInstance(y);
    SayByInstance(x);        return 0;
}
你的問題其實都可以解決 如果想要有一個共通的 function 可以處理所有該類別具現化出來的物件 可以考慮 friend function 把該物件(instance) 當參數傳進去 再呼叫該物件的成員函數即可 傳指標或傳參考都可以 之間的差異請去翻書 (牽扯到暫時物件的建立 影響到效能) 詳細用法...請自行翻書囉 ^_^ 只是你的問題就像 Stallion 兄說的 有點怪怪的 成員函式是用來處理自己的 member data 的 怎麼會去處理別人(另一個物件)的資料呢? 這樣似乎就失去封裝的意義了 ^_^! 發表人 - psl 於 2005/07/16 00:52:03
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-16 01:19:07 IP:59.104.xxx.xxx 未訂閱
抱歉~~因為我才開始學class對於OO觀念還是一知半解~~@@
系統時間:2024-05-19 0:07:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!