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@xxxxxxxxx> 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 >