Chciałbym zbudować coś takiego:„szablonów” przestrzeń nazw
File 1:
template<typename Vector>
namespace myNamespace {
class myClass1{ myClass1(Vector v) {...} }
}
File 2:
template<typename Vector>
namespace myNamespace {
class myClass2{ myClass2(Vector v) {...} }
}
Oczywiście nie jest to możliwe, ponieważ nie można szablonów nazw. Zamiast tego mógłbym użyć struct zamiast przestrzeni nazw, ale wtedy nie mogę rozprzestrzenić funkcji przestrzeni nazw na kilka plików.
Czy istnieje rozwiązanie tego problemu?
PS: Wiem, że mogłem zaprojektować klasy, ale wtedy musiałbym określić, jaki typ wektora chcę użyć w dowolnym momencie, kiedy tworzę nową klasę.
Jeśli chodzi o PS: Jak według Ciebie posiadanie szablonowej przestrzeni nazw usunie potrzebę określenia typu wektora podczas tworzenia instancji klas? Nadal potrzebujesz co najmniej czegoś podobnego do (fikcyjnego) 'using namespace myNamespace;' –
stakx
Jestem z tego powodu. A co to jest 'int' w twoim kodzie? – sbi
Tak, ale możesz zrobić coś takiego: int function1() { przy użyciu przestrzeni nazw myNamespace; myClass1 c1 = myClass1 (5); myClass2 c2 = myClass2 (2); } int function2() { przy użyciu przestrzeni nazw myNamespace ; myClass1 c1 = myClass1 ("a"); myClass2 c2 = myClass2 ("b"); } Niestety, ta int jest nieprawidłowa, usunę ją. Jak wkleić kod poprawnie? –
Manuel