Piszę aplikację w c++ gdzie jest wiele szablonów interfejsów i dziedziczących po nich szablonów klas. Zastanawiam się czy dla każdej klasy tworzyć oddzielny plik nagłówkowy .h i .cpp czy jest to sprzeczne z brzytwą Ockhama?
Jeżeli pisząc szablon nie miałeś na myśli cpp-owego template, to ja bym pisał klasę na nagłówek. Oczywiście, jeżeli masz dużo małych, tematycznie powiązanych klas to możesz je zebrać w 1 nagłówek. Pamiętaj, że jeżeli masz kod podzielony na części(1nagłówek - 1cpp), to zmieniając jedną nie musisz rekompilować całego projektu.
Atael napisał(a)
Jeżeli pisząc szablon nie miałeś na myśli cpp-owego template, to ja bym pisał klasę na nagłówek.
miałem na myśli taką klasę. Z tym, że tworzenie plików nagłówkowych dla szablonów klas jest dosyć porąbane, o ile pamiętam. Nawet gdzieś widziałem obszerne wypowiedzi wielu użytkowników na ten temat na tym forum
template class <class T> PrzykladowaKlasa {};
costamcos napisał(a)
template class <class T> PrzykladowaKlasa {};
To się nie skompiluje nawet. Powinno być
template < class T > class PrzykladowaKlasa {};
Szablonów nie da się implementować w plikach cpp (chyba, że ich pełne specjalizacje).
Chodziło mi o deklaracje w h i definicje w cpp. Nie całość w cpp, niedokładnie się wyraziłem ;x
wbrew pozorom, takie coś przewidywał dotychczasowy standard — chodzi o słowo kluczowe export
. Okazało się jednak niewypałem arcytrudnym w implementacji, i większość kompilatorów (z wyjątkiem Intel C++) tego nie obsługuje. Standard C++11 wyrzucił export
, redukując je do statusu rozszerzenia kompilatora.
Już wydali ostateczną wersje, czy ciągle są jeszcze drafty?
jest już wydana.
http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372
franki ponoć spadły ;-)
Atael napisał(a)
costamcos napisał(a)
template class <class T> PrzykladowaKlasa {};
To się nie skompiluje nawet. Powinno być
template < class T > class PrzykladowaKlasa {};
przez przypadek pomyliłem się.
Szablonów nie da się implementować w plikach cpp (chyba, że ich pełne specjalizacje).
ok, TU też co nieco można przeczytać. dzięki za pomoc
costamcos napisał(a)
Piszę aplikację w c++ gdzie jest wiele szablonów interfejsów i dziedziczących po nich szablonów klas. Zastanawiam się czy dla każdej klasy tworzyć oddzielny plik nagłówkowy .h i .cpp czy jest to sprzeczne z brzytwą Ockhama?
Też słyszałem o tej zasadzie ale się jej trzymam warunkowo - nawet boost i STL tak nie zawsze robią, więc nie można być od nich bardziej świętym.