Quand nous faisonsComment faire typedef sur la fonction void qui pourrait appartenir à n'importe quelle classe?
typedef void FuncCharPtr(char*, int) ;
vector<FuncCharPtr*> FuncVec ;
void Add(FuncCharPtr* f)
{
FuncVec.push_back(f);
}
nous ne permettons pas de passer comme types FuncCharPtr comme
void (someClass::*)b(char*, int);
void (someOtherClass::*)b(char*, int);
et nous voulons garder des liens vers des fonctions des deux classes dans un même vecteur afin de pouvoir appeler tous abonnés à la fois AVEC QUELQUE CHOSE COMME
void CastData(char * data, int length){
for(size_t i = 0 ; i < FuncVec.size(); i++){
char* dataCopy = new char[length];
memcpy(dataCopy, data, length);
FuncVec[i](dataCopy, length);
delete[] dataCopy;
}
}
Comment résoudre ce type de problème?
Pouvez-vous fournir des liens ou le code des exemples sur la façon d'implémenter std :: vector> solution? Ce serait vraiment râleur! –
Rella
@Kabumbus: Cela ressemblerait à ce que j'ai montré dans l'exemple ici. Vos types d'arguments diffèrent selon les types réels des fonctions. –
J'ai aimé votre classe ... et en quelque sorte mis à jour ... et a obtenu l'erreur décrite ici http://stackoverflow.com/questions/4853263/why-so-many-errors-here-in-typedef – Rella