Re: [問題] 新增object時候,自動新增執行
※ 引述《ofd168 ()》之銘言:
: 我有兩個class,分別是A和B
:
: 其中
: class B {
: public:
: A a;
: A b;
:
: void save_info() {
: a.save();
: b.save();
: }
: }
:
: void main() {
: B obj_b;
:
: ....
:
: obj_b.save_info();
: }
:
:
:
:
: 如果我要多一個c
:
: class B {
: public:
: A a;
: A b;
: A c;
:
: void save_info() {
: a.save();
: b.save();
: c.save();
: }
: }
:
:
:
: 如果我想新增d/e/f/...
: 勢必就要改code
:
: 想說有沒有辦法比較聰明的方法修改save_info
:
:
:
:
:
: 1. 原本的
: https://ideone.com/KU94fC
:
: 當我要新增變數時,需修改line 34 / 38 / 42
:
:
:
: 2. 改成使用Array + enum
: https://ideone.com/1Q92gH
:
: 當我要新增變數時,需修改 line 34 / 43
:
: 而 show_all_result 不需要動
:
:
:
: → loveme00835: 像這樣用 variadic template 遞迴展開即可 06/02 23:22
: → loveme00835: https://wandbox.org/permlink/MG8AZu2MVTYoRa5W 06/02 23:22
: → loveme00835: 後來想想 <utility> 沒有現成工具也不打緊 06/02 23:23
:
: 喔喔,這個寫法真的不錯,感謝L大
:
: 延續我的1+2的話
:
: https://ideone.com/pccF6Y
:
: 這樣的話,需要改line 49 / 58
:
: 但是優點是,code裡面不用弄成array方式
:
: 對我原本的code來說,改動最小,只要修改宣告的地方
:
:
: 補充
:
: 根據這篇解答
:
:
: https://stackoverflow.com/questions/46190709/address-of-a-method-of-an-objec
: t-in-c
:
: 縮網址 : https://tinyurl.com/yckgwa42
:
: 原本想說c++有可以類似function pointer的東西
:
: 想說能不能類似使用
:
: (func_ptr + obj_size) 直接切到下一個obj的function使用
:
:
: 但這篇有說明
:
: 有些編譯器為了節省空間,會將實作的member function使用同一份
:
: 也就是說,就算知道function address,
: 也沒辦法透過調整指標位置直接執行另一個object的function
: ※ 編輯: ofd168 (59.102.231.161 臺灣), 06/03/2020 00:19:09
: → loveme00835: 你要的是 pointer to member function, 不過那也要你 06/03 00:25
: → loveme00835: 先取得每個物件的位址才行 06/03 00:26
: → kingofsdtw: http://lars.ruoff.free.fr/xmlcpp/ ? 06/05 00:25
補一個另一種做法
利用static member variable + constructor
https://ideone.com/z87uYQ
概念上就是弄一個static vector<A*> A_vector;
因為是static,所以每個A的object都看的到
然後再constructor的時候,都要丟給A_vector自己的位置
所以就可以得到love大說的 先取得每個物件的位址才行
在class B就可以簡單的
void show_all_result() {
for (int i = 0; i < A::A_vector.size(); i++)
A::A_vector[i]->show_result();
}
感覺起來像是方法2的變形
--
標題 [笑話] 唐三藏的願望
唐三藏:八戒,你跑兩步給為師看看。
八 戒:師父,你為啥突然想看徒兒跑步?
唐三藏:哎啊!慚愧,為師自幼在寺中長大,既沒吃過豬肉,也沒看過豬跑步。
噓
01/16 21:40,
01/16 21:40
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.204.170 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1592384840.A.9CF.html
※ 編輯: ofd168 (60.250.204.170 臺灣), 06/17/2020 17:08:29
→
06/17 18:45,
5年前
, 1F
06/17 18:45, 1F
修改一下
https://ideone.com/jIymbX
遇到跟這篇一樣的問題
Double initialization of a static STL container in a C++ library
https://tinyurl.com/yaa66p25
概念上就是 global variable的initialize順序不可控
會遇到用的爽爽的,結果stl container做初始化,結果東西都不見
所以要另外用成function的方式,當function被呼叫時候,就會被初始化
-------
另外再宣告一個B會破功
目前只想到initialize時候把A_vector移到class B,
然後當作A constructor輸入參數 Orz
※ 編輯: ofd168 (60.250.204.170 臺灣), 06/17/2020 20:11:22
→
06/17 20:49,
5年前
, 2F
06/17 20:49, 2F
→
06/17 21:00,
5年前
, 3F
06/17 21:00, 3F
QQ
大大們求救,拯救我的人生
※ 編輯: ofd168 (60.250.204.170 臺灣), 06/18/2020 11:15:03
推
06/18 18:14,
5年前
, 4F
06/18 18:14, 4F
→
06/18 18:14,
5年前
, 5F
06/18 18:14, 5F
→
06/18 18:14,
5年前
, 6F
06/18 18:14, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章