作者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