I'm working my way through SAMS Teach Yourself C++ in 21 Days Third Edition. But I have ran into a problem.
When I try to compile this with Dev-C++ 4.9.9.2 I get an error message. I've tried compiling the code from the book and code on the CD, but both have the same result.
Lines 67 and 68 are the following, right at the end of the program.Code:C:\Documents and Settings\Will\My Documents\My C++\Sams Teach Yourself\Week 2\Day 14\14.10\List1410.cpp In function `int main()': 67 C:\Documents and Settings\Will\My Documents\My C++\Sams Teach Yourself\Week 2\Day 14\14.10\List1410.cpp invalid use of non-static member function `virtual void Mammal::Speak() const' 67 C:\Documents and Settings\Will\My Documents\My C++\Sams Teach Yourself\Week 2\Day 14\14.10\List1410.cpp cannot convert `void (Mammal::)() const' to `void (Mammal::*)() const' in assignment 68 C:\Documents and Settings\Will\My Documents\My C++\Sams Teach Yourself\Week 2\Day 14\14.10\List1410.cpp invalid use of non-static member function `virtual void Mammal::Move() const' 68 C:\Documents and Settings\Will\My Documents\My C++\Sams Teach Yourself\Week 2\Day 14\14.10\List1410.cpp cannot convert `void (Mammal::)() const' to `void (Mammal::*)() const' in assignment
Code:case 1: pFunc = Mammal::Speak; break; default: pFunc = Mammal::Move; break;I would be thankful for any help.Code://Listing 14.10 Pointers to member functions using virtual methods #include <iostream> using namespace std; class Mammal { public: Mammal():itsAge(1) { } virtual ~Mammal() { } virtual void Speak() const = 0; virtual void Move() const = 0; protected: int itsAge; }; class Dog : public Mammal { public: void Speak()const { cout << "Woof!\n"; } void Move() const { cout << "Walking to heel...\n"; } }; class Cat : public Mammal { public: void Speak()const { cout << "Meow!\n"; } void Move() const { cout << "slinking...\n"; } }; class Horse : public Mammal { public: void Speak()const { cout << "Winnie!\n"; } void Move() const { cout << "Galloping...\n"; } }; int main() { void (Mammal::*pFunc)() const =0; Mammal* ptr =0; int Animal; int Method; bool fQuit = false; while (fQuit == false) { cout << "(0)Quit (1)dog (2)cat (3)horse: "; cin >> Animal; switch (Animal) { case 1: ptr = new Dog; break; case 2: ptr = new Cat; break; case 3: ptr = new Horse; break; default: fQuit = true; break; } if (fQuit) break; cout << "(1)Speak (2)Move: "; cin >> Method; switch (Method) { case 1: pFunc = Mammal::Speak; break; default: pFunc = Mammal::Move; break; } (ptr->*pFunc)(); delete ptr; } return 0; }



LinkBack URL
About LinkBacks


