看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Ebergies (火神)》之銘言: : ※ 引述《tyc5116 (累人啊....)》之銘言: : : 不好意思,再請問一下 : : gcroot我上MSDN查過,也測試過了,就如您所說的一樣 : : 只是只gcroot到另一個CPP檔了以後,Arraylist的[]功能就失去了 : : 顯示error C2676: 二元運算子 '[' : 'gcroot<T>' : : 沒有定義此運算子或預先定義運算子可接受的型別轉換 : : 請問我還可以怎麼改??謝謝 : extern gcroot< ArrayList^> globalArray; : void somefunction() : { : ArrayList ^clrArrayList= globalArray; : // Now you know how to do : } 不好意思,這部份還有一些問題,在windows form中,像這樣子 //T.h class T{ public: int a; }; //Form1.h #include "T.h" const int value=10; T T1[value]; //aaaaa.cpp #include "Form1.h" extern const int value; //extern T T1[value]; 會有錯 error LNK2005: "class T * T1" (?T1@@$$Q3PAVT@@A) 已在ProjectTest.obj 中定義過了 error LNK1169: 找到有一或多個已定義的符號 請問是為什麼?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.18.48.28
QQ29:不就是你projectTest.cpp去include form.h了 T1就定義兩次拉 11/03 14:30
QQ29:你extern應該寫在form.h aaaaa.cpp寫定義 顛倒了 11/03 14:31
QQ29:而且你的form1.h定義int value=10 要是又有個cpp include這.h 11/03 14:32
QQ29:就會又造成重複定義了~ 你還是寫顛倒了 和aaaaa.cpp顛倒 11/03 14:32
tyc5116:可是我現在的情況,定義一定要寫在form1內耶 11/03 14:33
QQ29:為什麼一定要?? include form1.h後再對他定義就好啦@@ 11/03 14:35
tyc5116:還是一樣,剛試了一下,兩個顛倒,再加一個cpp放extern,錯誤 11/03 15:41
QQ29:重點就是卡在你.h為啥寫了定義 只要有兩個cpp都include他就 11/03 16:17
QQ29:鐵定重複定義~ 11/03 16:18
ledia:為什麼原 po 還要再加一個 cpp 呀? @@ 11/03 18:09
ledia:Form1.h 放 extern T T1[]; extern const int value; 11/03 18:13
ledia:aaaaa.cpp 放 const int value=10; T T1[value]; 就好啦 11/03 18:13
tyc5116:試了一下,好像有點心得了,謝謝大家 11/03 21:14