70 invalid use of non-static member function `virtual void Mammal::Speak() const'
70 cannot convert `void (Mammal::)() const' to `void (Mammal::*)() const' in assignment
71 invalid use of non-static member function `virtual void Mammal::Move() const'
71 cannot convert `void (Mammal::)() const' to `void (Mammal::*)() const' in assignment
Ovo izbaci kad pokusam da kompajliram na dev-c++. Kada pokusam na g++ svodi se na isto, opet "invalid use of non-static member function"
Sledeci kod je u pitanju:
#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 << "Vau!\n"; }
void Move() const { cout << "Hodam na petama.\n"; }
};
class Cat : public Mammal
{
public:
void Speak() const { cout << "Mjauu.\n"; }
void Move() const { cout << "Sunjam se.\n"; }
};
class Horse : public Mammal
{
public:
void Speak() const { cout << "Njistim.\n" ;}
void Move() const { cout << "Galopiram.\n"; }
};
int main()
{
void (Mammal::*pFuncMemb)() const = 0;
Mammal* ptr=NULL;
bool fQuit=false;
int Animal;
int Method;
while (fQuit==false)
{
cout << "(0) Izlaz (1) Pas (2) Macka (3) Konj: ";
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) Govori (2) Pomeri se: ";
cin >> Method;
switch(Method)
{
case 1: pFuncMemb = Mammal::Speak; break;
default:pFuncMemb = Mammal::Move; break;
}
(ptr->*pFuncMemb)();
delete ptr;
}
return 0;
}
Mislim da je jasno sta program da radi poenta mi je samo da shvatim neke stvari oko pokazivaca i zasto konkretno ovaj program ne radi.
PS: Potrazio sam i po forumu i koliko sam video kodovi se svode na isto tako da ne znam gde gresim.