Szablony, a podział na pliki.
Ostatnio zmodyfikowano 2015-03-25 20:14
dek12 Temat założony przez niniejszego użytkownika |
Szablony, a podział na pliki. » 2015-03-24 23:55:17 Dobry wieczór, W jaki sposób należy deklarować szablony, gdy mamy podział na kilka plików. Mam taki kod: #include <iostream> #include "Stack.h" using namespace std;
int main() { Stack < int > s(); return 0; }
#ifndef STACK_H #define STACK_H #include <iostream>
template < class T > class Stack { public: Stack < T >(); virtual ~Stack(); protected: private: }; #endif
#include "Stack.h"
template < class T > Stack < T >::Stack() { std::cout << "KONSTRUKTOR\n"; }
template < class T > Stack < T >::~Stack() { }
I coś nie działa, bo nie wypisuje mi cout'a z konstruktora. Słyszałem, że z tym podziałem przy szablonach są jakieś problemy, jak to zrobić poprawnie? |
|
pekfos |
» 2015-03-25 00:00:57 Definicje metod w nagłówku. i bez nawiasów okrągłych. |
|
dek12 Temat założony przez niniejszego użytkownika |
» 2015-03-25 08:33:32 Dałem tak: #include <iostream> #include "Stack.h" using namespace std;
int main() { Stack < int > s; return 0; }
#ifndef STACK_H #define STACK_H #include <iostream>
template < class T > class Stack { public: Stack < T >(); virtual ~Stack < T >(); protected: private: }; #endif
#include "Stack.h"
template < class T > Stack < T >::Stack() { std::cout << "KONSTRUKTOR\n"; }
template < class T > Stack < T >::~Stack() { }
to mam : main.cpp|7|undefined reference to `Stack<int>::Stack()'| main.cpp|8|undefined reference to `Stack<int>::~Stack()'| |
|
maly |
» 2015-03-25 08:58:18 Definicje metod w nagłówku. |
|
|
dek12 Temat założony przez niniejszego użytkownika |
» 2015-03-25 09:03:03 Aaa, źle zrozumiałem. Ale to plik cpp zostawić pusty, czy jak? |
|
maly |
» 2015-03-25 09:07:18 Skoro wszystko musi być w nagłówku to po co w ogóle .cpp? |
|
colorgreen19 |
» 2015-03-25 15:56:20 Deklarując szablon klasy nie możesz rozbijać jej funkcji składowych na deklaracje i definicje. Po prostu od razu zdefiniuj funkcje w ciele klasy. |
|
maly |
» 2015-03-25 16:22:59 Deklarując szablon klasy nie możesz rozbijać jej funkcji składowych na deklaracje i definicje. |
Jak nie można jak można. |
|
« 1 » 2 |