cpp_delegate - 8BitsCoding/RobotMentor GitHub Wiki
κΈ°λ₯μ ꡬνμ μμνλ€.
μ½λ°±ν¨μμ λλΌ μκ°νλ©΄ λκ² λ€. λ§λ‘ μ€λͺ μ μμ νλλ μλ μ½λλ₯Ό νμΈνμ.
#include <iostream>
using namespace std;
class Animal;
// Delegate ꡬν
class AnimalDelegate {
public :
virtual void onSound(Animal* pSender) = 0;
virtual void onWalk(Animal* pSender) = 0;
};
class Animal {
private :
AnimalDelegate* delegate;
public :
Animal() {
this->delegate = NULL;
}
void setDelegate(AnimalDelegate* delegate) {
this->delegate = delegate;
}
void sound() {
if(this->delegate) {
this->delegate->onSound(this);
}
}
void walk() {
if(this->delegate) {
this->delegate->onWalk(this);
}
}
}
// κ° delegate ꡬν
class Dog : public Animal, public AnimalDelegate {
public:
Dog() {
this->setDelegate(this);
}
void onSound(Animal* pSender) {
cout << "Dog λ©λ©" << endl;
}
void onWalk(Animal* pSender) {
cout << "Dog κ° κ±·λλ€ " endl;
}
};
void main() {
Dog dog;
dog.sound();
dog.walk();
}