undefined reference, but I think I already defined them

Dear Advanced c/g++ programers:

I tested 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
The linker error is because you didn't implement the destructor for Superhero (or at least that's what it's saying).
so, do you know how to implement (the destructor for Superhero)?(easyest)
thanks your code a lot in advance(I am waiting)
closed account (S6k9GNh0)
~Superhero() { }
Topic archived. No new replies allowed.