※ 引述《birka1222 (筱望)》之銘言:
: 標題: [問題] Object array在class裡的宣告方法
: 時間: Fri Dec 1 10:25:49 2017
:
: 如題
:
: 有一個class叫staff,constructor 需輸入一個int代表編號。
:
: 現在有另一個class叫team,constructor不須傳入任何值
:
: team裡有一個staff的array,ST[100],對應編號1-100。
:
: 請問要怎麼寫team的constructor?
:
: 像這樣的感覺:
:
: class staff{
:
: public:
:
: staff(int a){b=a;}
:
: private:
:
: int b;}
:
:
: class team{
:
: public:
:
: team(){}//這裡怎麼寫?
:
: private:
:
: staff ST[100];}
:
:
:
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.61.190
: ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1512095152.A.DA7.html
: → grayStone: http://en.cppreference.com/w/cpp/language/initializ 12/01 10:46
: → grayStone: er_list 12/01 10:46
: → Killercat: 看不懂 但是我猜你是想要問std::array或 12/01 10:47
: → Killercat: std::initializer_list<int>? 12/01 10:47
: 推 Sidney0503: 看你是編譯時期就決定大小還是run-time時期決定大小 12/01 10:55
: → birka1222: 編譯時 12/01 10:59
: → birka1222: 固定就是100個staff然後編號依序是1到100 12/01 11:00
:
: 謝謝一樓的連結,但是貌似沒有用到array的地方?或是只是我看不懂...
:
: ※ 編輯: birka1222 (36.231.61.190), 12/01/2017 11:03:05
: ※ 編輯: birka1222 (36.231.61.190), 12/01/2017 11:08:02
: → galic: 不就一個for loop把1~100填到對應index裡面去? 12/01 11:16
: → Killercat: 一樓就是initializer_list<int>, 如果constructor參數 12/01 11:40
: → Killercat: 是這個的話,可以直接把array(甚至匿名也成)喂進去 12/01 11:40
: → loveflames: 我覺得不是他要的,他要的是不餵東西就填陣列值的方法 12/01 11:50
: → loveflames: 我只能說請乖乖用loop,不要異想天開找其他解,只會花 12/01 11:55
: → loveflames: 你更多時間 12/01 11:55
: → hichcock: 動態宣告, 然後 for loop 給就可以了 12/01 11:55
: 可是for loop 要怎麼用呢?
:
: 我以為class裡的object只能用
:
: classname():
: object的constructor;
: {}
:
: 的方法宣告?
:
: 我試著用team(){for (int i=0; i<100; i++)ST[i](i+1);}
:
: 可是不行。請問這行要怎麼修改?
:
:
: ※ 編輯: birka1222 (36.231.61.190), 12/01/2017 11:59:03
: → loveflames: 刁鑽解不是沒有,用metaprogramming是可以做 12/01 11:58
: ※ 編輯: birka1222 (36.231.61.190), 12/01/2017 12:04:37
: → birka1222: 謝謝樓上。我去研究看看 12/01 12:05
: → loveflames: 你的架構得改 12/01 12:12
: 推 shadow0326: 你loop不行是因為沒有動態宣告呀 或者不想動態宣告的 12/01 12:14
: → shadow0326: 話就幫staff加method或assign operator 12/01 12:14
: → shadow0326: 或者乾脆用vector<staff> 方法很多啦 12/01 12:14
: → loveflames: 總之這種小事不要想去用metaprogramming 12/01 12:26
:
: 動態宣告是像這樣嗎?
:
: #include <iostream>
:
: using namespace std;
:
: class staff{
: public:
: staff(int a){id=a;}
: private:
: int id;
: };
:
: class team{
: public :
: team(){ST = new staff[100];}
: private:
: staff * ST;
:
: };
:
: 可是沒辦法給初始值耶?
: 不好意思一直麻煩大家
滿足你的需求, 順從你的渴望
class team{
public :
team(){}
private:
staff *ST[100];
};
// 然後初使化就用下面的方式
for(i = 0;i < 100;i++) ST[i] = new staff(i);
--
不想因為什麼都不努力而後悔....
如果我因為什麼都不努力而後悔....
我更希望 勇敢嘗試之後卻失敗了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.105.226
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1512347756.A.BF6.html
※ 編輯: hichcock (60.248.105.226), 12/04/2017 08:36:25
※ 編輯: hichcock (60.248.105.226), 12/04/2017 08:40:04
※ 編輯: hichcock (60.248.105.226), 12/04/2017 08:40:29
※ 編輯: hichcock (60.248.105.226), 12/04/2017 11:55:14