Existe-t-il un moyen de stocker un modèle ou une variable automatique dans une classe sans faire de la classe un modèle? J'essaye de stocker un pointeur vers l'un des générateurs de nombres aléatoires de STL mais je n'arrive pas à trouver un moyen de le faire sans faire de la classe entière un modèle. Ce n'est pas une option car le déplacement de tous les éléments dans le fichier cpp vers h entraînerait une tonne de fichier d'en-tête cyclique dont je ne veux pas traiter. Ainsi, par exemple, il serait quelque chose comme ceci:Variable membre C++ de tout type dans la classe non-template
class tSomeClass
{
public:
template<typename RNG>
tSomeClass(RNG * rng) : fRNG(rng) { }
private:
RNG * fRNG; // How do I get this working???
};
tout Jusqu'à présent, je suis venu avec finit toujours avec avoir besoin de toute la classe comme un modèle, donc je suis perplexe.
EDIT: Je savais que j'avais oublié de mentionner quelque chose. Je ne peux pas utiliser l'héritage pour spécifier le type RNG puisque je n'ai aucune idée de la base, à moins que quelqu'un ne sache quelle est la classe de base pour les RNG utilisés par STL. Actuellement, j'utilise std :: default_random_engine.
Pourquoi avez-vous besoin d'un modèle pour cela? L'héritage régulier ne fonctionnerait-il pas? – dasblinkenlight
¤ Vous pouvez simplement stocker une fonction 'std :: < double() >'. Cheers & hth., –
Êtes-vous sûr de ce que vous voulez stocker * TOUT * type * dans RNG? ne peux-tu pas le limiter d'une façon ou d'une autre? Je veux dire, voulez-vous stocker un pointeur sur une classe, un pointeur vers un type primitif et ainsi de suite? – Lucian