類別使用問題 |
尚未結案
|
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
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 發送簡訊給我 |
|
psl
一般會員 發表:6 回覆:30 積分:7 註冊:2003-06-11 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |