作者coralleaf (CoralLeaf)
看板EE_DSnP
標題[問題]Homework 9
時間Thu Jan 1 15:55:36 2009
在 Link 的時候出現:
[Link Errror]undefined reference to 'Vertex::_globalRel'
為什麼會出現這個呢?
我已經找出原因了......
http://www.keil.com/support/docs/3136.htm
這裡有錯誤訊息出現的理由,
在這裡分享給大家~~~
※ 編輯: coralleaf 來自: 125.229.32.84 (01/01 19:23)
1F:推 wintercobra:我也有一樣的情況,但還是不太懂要怎麼改 01/02 11:56
2F:推 wintercobra:我的是undefined reference to 'vtable for Vertex' 01/02 12:24
3F:→ wintercobra:上面那個網頁說是constructor和destructor沒有定義 01/02 12:25
4F:→ wintercobra:但是我看Vertex裡面有定義啊,不知道怎麼回事 01/02 12:26
5F:推 timrau:static member variable記得要在一個.cpp檔裡面initialize 01/02 13:53
6F:→ timrau:不然就會Link error 01/02 13:54
7F:推 wintercobra:有啊,老師的main.cpp裡面有把_globalRef=0 01/02 15:37
8F:→ wintercobra:vtable是什麼? 01/02 15:37
9F:推 MrOrz:vtable: Topic 8, slide 41 01/03 19:41
10F:推 wintercobra:那這樣undefined reference to 'vtable for Vertex' 01/04 09:54
11F:→ wintercobra:是什麼意思? 01/04 09:54
12F:推 ric2k1:通常是有些 pure virtual function 在 inherited classes 01/04 09:57
13F:→ ric2k1:中沒有被定義... 01/04 09:57
14F:→ ilovecksc:g++的話只要宣告成pure virtual function 或是後面加個 01/04 22:40
15F:→ ilovecksc:{}就可以了 據說是g++會找不到vtable再哪個.o file裡 01/04 22:41
16F:推 wintercobra:還是不懂耶... 01/05 11:32
17F:推 ric2k1:virtual function 不要放在 private 裡面, 這樣 inherited 01/10 01:16
18F:→ ric2k1:class 會看不到, vtable 就 undefined 了... 01/10 01:17
19F:→ wintercobra:改到protected去了,還是找不到vtable 01/10 10:16
20F:推 ric2k1:Inherited class 將 function 放在 public, 而 base class 01/10 12:52
21F:→ ric2k1:將他放在 public... 這樣是對不起來的!! 你 either 將 01/10 12:53
22F:→ ric2k1:上面兩行寫錯了, 請忽略..... 01/10 12:56
23F:推 ric2k1:你有將function 宣告成 pure virtual function 嗎? 01/10 12:56
24F:推 wintercobra:有,現在的情況是:pure function在base class的 01/11 01:12
25F:→ wintercobra:protected裡面,而同樣的function在derived的public 01/11 01:13