zasady poprawnego programowania

Odpowiedz Nowy wątek
2011-09-06 17:36
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?

Pozostało 580 znaków

2011-09-06 17:47
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.

Pozostało 580 znaków

2011-09-06 17:49
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 {}; 

Pozostało 580 znaków

2011-09-06 18:15
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).

Pokaż pozostałe 2 komentarze
Chodziło mi o deklaracje w h i definicje w cpp. Nie całość w cpp, niedokładnie się wyraziłem ;x - Atael 2011-09-06 18:24
standard JUŻ JEST więc nie należy o nim pisać w czasie przyszłym. - Azarien 2011-09-06 20:52
Już wydali ostateczną wersje, czy ciągle są jeszcze drafty? - hauleth 2011-09-06 20:56
Już wydali - MJay 2011-09-06 22:04
Zawsze można było albo w hpp i cpp albo całość w cpp, tylko nie można go wtedy użyć nigdzie indziej. - Endrju 2011-09-06 22:49

Pozostało 580 znaków

2011-09-06 21:01
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 ;-)

edytowany 2x, ostatnio: Azarien, 2011-09-06 21:03
Tiaaaa, wydam 1300 PLNów by to przeczytać, dzięki bardzo. Poczytam w opisach kompilatorów :P - hauleth 2011-09-06 21:06
I lambdy w końcu są czy nie w standardzie? - hauleth 2011-09-06 21:07
w necie znajdziesz kwietniowego drafta. ponoć różnice są tylko edycyjne: czcionki, kolory itp.; tak, lambdy są w standardzie, nikt ich chyba nie planował wyrzucać? - Azarien 2011-09-06 21:11
Nie wiem, czy to można zakwalifikować w kategorii do czytania. To taki o wiele trudniejszy reference. Pracowali nad tym standardem przez kilkanaście lat, więc nie podejrzewam, że w ciągu paru miesięcy jakoś się bardzo ten standard zmienił. Podczas pracy nad standardem to chyba tylko z dużych rzeczy wyrzucili koncepty. - Zjarek 2011-09-06 22:31
Wiem, że wprowadzono kiedyś export oraz, że okazał sie niewypałem. Nie było sensu wspominać. Nie można znaleźć na necie gdzieś ostatniego dostępnego draftu ? Sądzę, że nie różni się bardzo od oryginału. - Atael 2011-09-06 22:34
można. parę dni temu ściągałem. szukaj po nazwie pliku "n3290.pdf", oryginalny link wszędzie podawany już nie działa. - Azarien 2011-09-07 07:19

Pozostało 580 znaków

2011-09-07 01:05
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

edytowany 2x, ostatnio: costamcos, 2011-09-07 01:06

Pozostało 580 znaków

2011-09-07 17:58
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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