Kicsit elakadtam C++-ban. Pontosabban, van egy Dog osztályom aminek van 7 tagfüggvénye és ezeket szeretném beletenni egy függvénymutatókat tartalmazó tömbbe, de kivételt dob, mikor ezzel próbálkozom. Mi lehet a probléma? Köszönöm a segítséget!
#include <iostream>
using namespace std;
class Dog{
public:
void speak()const;
void move()const;
void eat()const;
void growl()const;
void whimper()const;
void rollOver()const;
void playDead()const;
}; // Dog osztály deklarálás vége
//Dog osztály implementálása
#include "Dog.h"
void Dog::speak()const{
cout<<"Woof!\n";
}
void Dog::move()const{
cout<<"Walking to heel...\n";
}
void Dog::eat()const{
cout<<"Gobbling food...\n";
}
void Dog::growl()const{
cout<<"Grrrrrr\n";
}
void Dog::whimper()const{
cout<<"Whining noises...\n";
}
void Dog::rollOver()const{
cout<<"Rolling over...\n";
}
void Dog::playDead()const{
cout<<"Is this the end of Little Caesar?\n";
}
typedef void (Dog::*PDF)()const;
int main(){
const int MAXFUNCTIONS =7;
PDF dogFunctions[MAXFUNCTIONS]={
Dog::speak, //Itt jelez hibát,
Dog::move, //miszerint helytelen a
Dog::eat, //függvényhasználat
Dog::growl,
Dog::whimper,
Dog::rollOver,
Dog::playDead
};
Dog *pDog=0;
int method;
bool quit=false;
while(!quit){
cout<<"(0)Quit (1)Speak (2)Move (3)Eat (4)Growl (5)Whimper (6)Roll over (7)Play Dead: ";
cin>>method;
if(!method){
quit=true;
break;
}
else{
pDog =new Dog;
(pDog->*dogFunctions[method-1])();
delete pDog;
}
}
return 0;
}
A tagfüggvények pointerére így hivatkozol:
&Osztály::metódus
Nálad lemaradt a & jel a tömb definícióban.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!