#include <Vector.h>
class IAnimal{
public:
IAnimal(){};
~IAnimal(){};
virtual void eat(int,int) = 0;
};
class Dog: public IAnimal{
public:
Dog(){};
~Dog(){};
virtual void eat(int food, int water){
// std::cout<<"Dog: " << food<< " " << water << std::endl;
Serial.print("Dog: ");
Serial.print(food);
Serial.print(" ");
Serial.println(water);
}
};
class Cat :public IAnimal{
public:
Cat(){};
~Cat(){};
virtual void eat(int food, int water){
// std::cout << "Cat: " << food << " " << water << std::endl;
Serial.print("Cat: ");
Serial.print(food);
Serial.print(" ");
Serial.println(water);
}
};
class Test{
private:
// std::vector<void (IAnimal::*)(int, int)> vec;
Vector<void (IAnimal::*)(int, int)> vec;
public:
void Init(){
IAnimal* dog1 = new Dog();
IAnimal* dog2 = new Dog();
IAnimal* cat3 = new Cat();
//here I want to add callbacks to vec
void(IAnimal::*f)(int, int) = &IAnimal::eat;
(*f)->dog1.eat;//doesn't work
vec.push_back(f);
}
void RunTest(){
for (int i = 0; i < vec.size(); i++)
{
//here I call the callbacks
vec[i](i, i);//also I don't know how this should be called
}
}
};
void main(){
init(); // arduino init
Test t;
t.Init();
t.RunTest();
getchar();
}