zasady poprawnego programowania

0

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?

0

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.

0
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 {}; 
0
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).

0

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 ;-)

0
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

0
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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0