[Dodatkowe materiały]Szablony klas
Ostatnio zmodyfikowano 2011-12-23 20:58
poldek Temat założony przez niniejszego użytkownika |
[Dodatkowe materiały]Szablony klas » 2011-12-23 20:23:45 Witam. Pisze sobie pewną klasę do C++ i chce żeby miała Szablon, ale moja klasa jest podzielona na 2 pliki(*.hpp i *.cpp). Raczej metody w tej klasie nie powinny mieć ustalonego typu z góry i tutaj pojawia się problem jak pisze szablon klasy w jednym pliku (*.cpp) to wszystko jest Ok a jeśli tą klasę rozpisuję tę klasę na dwa pliki to nie chce mi działać i tutaj zwracam się do was ... Jak powinny wyglądać szablony klas w dwóch plikach (*.hpp i *.cpp)? Szablony klas |
|
pekfos |
» 2011-12-23 20:33:31 w całości w plikach .h(pp) Kompilator potrzebuje kompletnego kodu szablonu by dokonać konkretyzacji :) |
|
poldek Temat założony przez niniejszego użytkownika |
» 2011-12-23 20:34:41 @Down Zaraz |
|
pekfos |
» 2011-12-23 20:37:47 Czego? Twój opis problemu nic nie opisuje. Daj kod, log, itp. To prawie jak "mam szablon w dwóch plikach. nie działa." |
|
poldek Temat założony przez niniejszego użytkownika |
» 2011-12-23 20:49:53
#include <iostream> #include "klasa.h"
int main() { return 0; }
typ liczba::dodaj( void ) { return a + b; }
#ifndef KLASA_H #define KLASA_H
#include <iostream> using namespace std;
template < class typ > class liczba { public: typ a, b; typ dodaj( void ); };
#endif
Proszę. To jest tylko taki przykład jak się uda z tym to później to wykorzystam te Szablony do klasy Vektor2D którą piszę aby ułatwić życie w allegro, ale to jest inna bajka. |
|
pekfos |
» 2011-12-23 20:51:58 zawartość pliku klasa.cpp wsadź do pliku klasa.hpp. Innej rady nie ma. |
|
poldek Temat założony przez niniejszego użytkownika |
» 2011-12-23 20:53:19 A czy nie ma innej opcji/sposobu żeby to działało ? |
|
pekfos |
» 2011-12-23 20:54:39 Co się tak uwziąłeś na ten podział? Kompilator musi mieć kompletny kod szablonu wszędzie gdzie jest potrzebny. Możesz trzymać implementację w innych plikach .hpp i tylko dołączyć je na koniec pliku klasa.hpp |
|
« 1 » 2 |