This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: undefined reference to vtable


I think your questions might get a better response from something like
comp.lang.c++ or any of the c++ channels on irc like irc.freenode.org
##c++

On 16 July 2011 00:05, eric <cneric12lin0@gmail.com> wrote:
> Dear Advanced C/g++ programers:
>
> a simple program about Creating an interface with an Abstract Base
> Class. from book (C++ cookbook) page 308, 309. Example 8-11. using a
> pure interface.
> ----------------------
> // Example 8-11 Using a pure interface
> class Person {
> public:
> virtual void eat() = 0;
> virtual void sleep() = 0;
> virtual void walk() = 0;
> virtual void jump() = 0;
> };
>
> class IAirbone {
> public:
> virtual void fly() = 0;
> virtual void up() = 0;
> virtual void down() = 0;
> };
>
> class Superhero : public Person, // A superhero *is* a person
> public IAirbone { // and flies
> public:
> virtual void eat();
> virtual void sleep();
> virtual void walk();
> virtual void jump();
> virtual void fly();
> virtual void up();
> virtual void down();
> virtual ~Superhero();
> };
>
> void Superhero::walk() {
> // ...
> }
>
> void Superhero::fly() {
> // ...
> }
>
> // Implement all of the pure virtuals in Superhero's Superclasses...
>
> int main() {
>
> Superhero superman;
> superman.walk(); // Superman can walk like a person
> superman.fly(); // or fly like a bird
> }
> ---------------------------------------------------
> my g++ 4.5.2 (on linux2.6.35-25) response by
> -------------------------------------
> eric@eric-laptop:~/cppcookbook/ch8$ g++ Example8-11.cpp
> /tmp/ccT3nO5t.o: In function `main':
> Example8-11.cpp:(.text+0x47): undefined reference to
> `Superhero::~Superhero()'
> /tmp/ccT3nO5t.o: In function `Superhero::Superhero()':
> Example8-11.cpp:(.text._ZN9SuperheroC2Ev[_ZN9SuperheroC5Ev]+0x24):
> undefined reference to `vtable for Superhero'
> Example8-11.cpp:(.text._ZN9SuperheroC2Ev[_ZN9SuperheroC5Ev]+0x2e):
> undefined reference to `vtable for Superhero'
> collect2: ld returned 1 exit status
> --------------------------------------------------
> actually that book even did not specially define Superhero::walk(),
> that is
> I add by myself to escape my compile's error(is that right? or book's
> is right?)
> you can download the source code of that book's example and test by
> yourself
> http://examples.oreilly.com/9780596007614/
> according to book, thses code are compile good in visual c++ 7.1 on
> window xp
> thanks your help a lot in advance, Eric
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]