[問題] C++ 如何寫物件陣列傳值

看板C_and_CPP (C/C++)作者 (天空行星)時間15年前 (2011/03/21 02:10), 編輯推噓2(2014)
留言16則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C++ 問題(Question): 想請問大家一個問題 情況是這樣 我有一個大class A 裡面會使用小class B 我在A中想宣告一個class C物件的陣列 並在A中呼叫B的時候 讓B的函式能去改動這個物件陣列 大致類似這樣 class C //某種物件 class B //一個做事的class { void function(); } class A //一個類似main的class { vector<C> c_array; // 我想建立型態C的array B b; //建立一個B B.function(); //利用B來做某件事 } 我想在B.function中修改c_array的值 但我不知道怎麼寫比較好 作法1. 用vector寫這個陣列 但在A設定函式參數上就會錯了 例如 class B{ void function(vector<C>) }; 在A中寫vector<C> vec; B.function(vec); 出現error LNK2019: 無法解析的外部符號 我不知道如何傳vector型態的東西當參數 而且還要是call-by-reference的 作法2. 用指標寫這個物件 但我用malloc時會錯 不知道哪裡有問題了 例如我寫 C* c = malloc(sizeof(C)*100); 但呼叫C[0] 時就當了 作法3. 在A中用static 的vector寫陣列 但我沒辦法讓他在B中被呼叫 因為A已經include B了 B不能在include A 作法4. 用全域變數 全域變數好像不能用在vector物件? 他會說我的全域變數物件沒初始化 可是vector物件要怎麼初始化? 這應該是個很基本的問題 但一時三刻找不到好方法 希望大家可以幫我~謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.127.175

03/21 02:12, , 1F
你認為有錯, 是執行結果有錯? 還是編譯/連結時會報錯?
03/21 02:12, 1F

03/21 02:14, , 2F
如果可以, 請附上相關錯誤訊息/程式碼
03/21 02:14, 2F
※ 編輯: SKS 來自: 219.84.127.175 (03/21 02:24)

03/21 02:29, , 3F
程式碼再完整一點
03/21 02:29, 3F

03/21 02:43, , 4F
可是我是想問怎麼寫 附上原來就錯的程式碼沒什麼意義
03/21 02:43, 4F

03/21 02:43, , 5F
條件我都寫了 想讓class A 中建一個 class C型態的物件陣列
03/21 02:43, 5F

03/21 02:44, , 6F
在class A中呼叫class B的函式時可以改這個陣列
03/21 02:44, 6F

03/21 02:46, , 7F
顯然你的說明不夠,大家看不懂,才要求程式碼
03/21 02:46, 7F

03/21 02:46, , 8F
我看了好幾次還是不懂你的A,B,C之間的關係
03/21 02:46, 8F

03/21 02:58, , 9F
醫生通常要看到病人才有辦法診治的...XD
03/21 02:58, 9F

03/21 03:04, , 10F
那我在改一下
03/21 03:04, 10F
※ 編輯: SKS 來自: 219.84.127.175 (03/21 03:08)

03/21 03:15, , 11F
03/21 03:15, 11F

03/21 03:18, , 12F
不要用 malloc 建物件,那不會呼叫該物件的建構子。用 new
03/21 03:18, 12F

03/21 03:20, , 13F
喔~~ 要用 & 嗎?? 試試看
03/21 03:20, 13F
※ 編輯: SKS 來自: 219.84.127.175 (03/21 03:26)

03/21 03:29, , 14F
可以了 真的非常感謝j大 原來要傳 & 今天第一次看到這種寫法
03/21 03:29, 14F

03/21 03:30, , 15F
100P當作點小心意 非常感恩
03/21 03:30, 15F

03/21 09:04, , 16F
因為你的敘述真的很怪 囧..
03/21 09:04, 16F
文章代碼(AID): #1DXaCPB4 (C_and_CPP)
文章代碼(AID): #1DXaCPB4 (C_and_CPP)