Il existe 2 classes de gabarit A et B ayant 2 membres privés a1, a2 et b1, b2.Pointeur vers le problème des méthodes et des modèles, C++
template <typename T>
class A
{
private:
T a1, a2;
public:
T getA1() const {return a1;}
T getA2() const {return a2;}
};
template <typename T>
class B
{
private:
T b1, b2;
public:
T getB1() const {return b1;}
T getB2() const {return b2;}
};
Dans la classe Test, il existe un besoin de 2 pointeurs pointant vers des getters.
class Test
{
private:
template <typename T>
static T (*getFirst)();
template <typename T>
static T (*getSecond)();
}
template <typename T>
T (* Test::getFirst)() = &A<T>::getA1; //Pointer to getA1, error
template <typename T>
T (* Test::getSecond)() = &B<T>::getB2; //Pointer to getB2, error
int main
{
A <double> a;
B <double> b;
double c = a.getFirst + b.getSecond;
}
T représente les types de données fondamentales ... Est-il possible de mettre en œuvre ce code sans spécialisation (à savoir des pointeurs vers des membres du modèle de classe) ou les « pointeurs » devraient être spécialisés? Merci pour tous les exemples ...
J'ai essayé de composer une réponse, mais j'ai échoué pour une raison: je ne comprends pas ce que vous avez l'intention de faire avec votre test de classe. Vous en fournissez une définition qui comporte des erreurs, mais vous ne l'utilisez nulle part. La façon de corriger ces erreurs dépend en grande partie de la façon dont vous prévoyez de l'utiliser. Certaines des réponses ci-dessous peuvent vous être utiles, mais pour obtenir la bonne réponse, vous devez fournir un exemple d'utilisation de Test. –