您的位置:首页 > 编程语言 > C语言/C++

undefined reference to typeinfo - C++ error message

2016-09-09 09:25 495 查看
undefined reference to typeinfo - C++ error message

There are some compiler and loader error messages that shout obviously
as to their cause, but there are others that simply don't give the new
user much of an indication as to what's really wrong. And most of those I
get to know pretty quickly, so that I can whip around a room during a
course, making suggestions to delegate to check for missing ; characters
or double quotes, to check that they have used the right type of
brackets for a list subscript and haven't unintentionally written a
function call, etc.

Here's one of the more obscure messages from the Gnu C++ compiler - or rather from the loader:

g++ -o polygon shape.o circle.o square.o polygon.o

circle.o(.gnu.linkonce.r._ZTI6Circle+0x8): undefined reference to `typeinfo for Shape'

square.o(.gnu.linkonce.r._ZTI6Square+0x8): undefined reference to `typeinfo for Shape'

polygon.o(.gnu.linkonce.t._ZN5ShapeC2Ev+0x8): In function `Shape::Shape()':

: undefined reference to `vtable for Shape'

collect2: ld returned 1 exit status


And you can be scratching you head for hour over that one!

The error? shape.o contains a base class from which classes are derived
in circle.o and square.o .. but virtual function(s) in shape's
definition are missing null bodies.

The fix? You've got line(s) like

virtual float getarea() ;


that should read

virtual float getarea() {}


这个错误解决了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: