Re: [問題] extern

看板C_and_CPP作者 (累人啊....)時間16年前 (2009/11/03 14:27), 編輯推噓5(508)
留言13則, 3人參與, 最新討論串8/9 (看更多)
※ 引述《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

11/03 14:30, , 1F
不就是你projectTest.cpp去include form.h了 T1就定義兩次拉
11/03 14:30, 1F

11/03 14:31, , 2F
你extern應該寫在form.h aaaaa.cpp寫定義 顛倒了
11/03 14:31, 2F

11/03 14:32, , 3F
而且你的form1.h定義int value=10 要是又有個cpp include這.h
11/03 14:32, 3F

11/03 14:32, , 4F
就會又造成重複定義了~ 你還是寫顛倒了 和aaaaa.cpp顛倒
11/03 14:32, 4F

11/03 14:33, , 5F
可是我現在的情況,定義一定要寫在form1內耶
11/03 14:33, 5F

11/03 14:35, , 6F
為什麼一定要?? include form1.h後再對他定義就好啦@@
11/03 14:35, 6F

11/03 15:41, , 7F
還是一樣,剛試了一下,兩個顛倒,再加一個cpp放extern,錯誤
11/03 15:41, 7F

11/03 16:17, , 8F
重點就是卡在你.h為啥寫了定義 只要有兩個cpp都include他就
11/03 16:17, 8F

11/03 16:18, , 9F
鐵定重複定義~
11/03 16:18, 9F

11/03 18:09, , 10F
為什麼原 po 還要再加一個 cpp 呀? @@
11/03 18:09, 10F

11/03 18:13, , 11F
Form1.h 放 extern T T1[]; extern const int value;
11/03 18:13, 11F

11/03 18:13, , 12F
aaaaa.cpp 放 const int value=10; T T1[value]; 就好啦
11/03 18:13, 12F

11/03 21:14, , 13F
試了一下,好像有點心得了,謝謝大家
11/03 21:14, 13F
文章代碼(AID): #1AxyrcPQ (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
1
1
完整討論串 (本文為第 8 之 9 篇):
問題
3
12
問題
5
13
問題
1
1
問題
1
2
問題
2
8
問題
3
10
問題
0
10
文章代碼(AID): #1AxyrcPQ (C_and_CPP)