zase hledám, jak něco napsat. Tentokrát potřebuji laborovat s odkazem na funkci třídy.
Co chci napsat: mám nějakou obecnou třídu, která má funkci execute a ta si umí zavolat nějakou funkci (s předem jasnými parametry), která ji je předaná v rámci parametrů.
Umím to napsat jako odkaz na statickou metodu:
Kód: Vybrat vše
typedef bool(*provedNeco)(int vParametr);
class tTrida {
tTrida() {}
void execute(provedNeco vCo) {
if (vCo(5)) {
Serial.println(F("O.K."));
}
}
}
bool Test(int vParametr) {
return vParametr==3;
}
void setup() {
pObjekt=new tTrida();
pObjekt->execute(*Test);
}
Někde jsem našel přibližně toto:
Kód: Vybrat vše
class TVolanaTrida; //forward deklarace
typedef bool(TVolanaTrida::*provedNeco)(int vParametr);
class tTrida {
tTrida() {}
void execute(provedNeco vCo) {
if (vCo(5)) {
Serial.println(F("O.K."));
}
}
}
class TVolanaTrida{
tVolanaTrida(){}
bool Test(int vParametr) {
return vParametr==3;
}
void provedSebe(tTrida vKudy) {
//Tohle neumím napsat. Asi něco jako
vKudy.execute(*Test);
}
}
void setup() {
pVolana=new tVolanaTrida();
pObjekt=new tTrida();
pVolana->provedSebe(pObjekt);
}
Vím, že si dost vymýšlím, ale jsem zvyklý programovat v jiných jazycích a zde jsou mi zatím nějaké věci dost utajené.
Díky
Pb