看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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