Je voudrais construire quelque chose comme ceci:« templating » un espace de noms
File 1:
template<typename Vector>
namespace myNamespace {
class myClass1{ myClass1(Vector v) {...} }
}
File 2:
template<typename Vector>
namespace myNamespace {
class myClass2{ myClass2(Vector v) {...} }
}
Bien sûr, cela est impossible, car vous ne pouvez pas namespaces modèle. Au lieu de cela, je pourrais utiliser une structure au lieu d'un espace de noms, mais je ne peux pas étendre les fonctions de l'espace de noms sur plusieurs fichiers.
Y a-t-il une solution à un tel problème? PS: Je sais que je pourrais modéliser les classes, mais alors je devrais spécifier quel type de vecteur je veux utiliser chaque fois que je crée une nouvelle classe.
En ce qui concerne votre PS: Comment pensez-vous qu'avoir un espace de noms basé sur un modèle supprimerait le besoin de spécifier le type de vecteur lorsque vous instanciez des classes? Vous auriez toujours besoin d'au moins quelque chose comme un (fictif) 'using namespace myNamespace;' –
stakx
Je suis avec stakx sur ceci. Et quel est ce 'int' dans votre code? – sbi
Oui, mais alors vous pourriez faire quelque chose comme ceci: int function1() { en utilisant l'espace de noms myNamespace; myClass1 c1 = myClass1 (5); myClass2 c2 = myClass2 (2); } int fonction2() { en utilisant l'espace de noms myNamespace ; myClass1 c1 = myClass1 ('a'); myClass2 c2 = myClass2 ('b'); } Désolé, que int est faux, je vais le supprimer. Comment coller du code ici correctement? –
Manuel