Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Szablony, a podział na pliki.

Ostatnio zmodyfikowano 2015-03-25 20:14
Autor Wiadomość
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:
C/C++
//main
#include <iostream>
#include "Stack.h"
using namespace std;

int main()
{
    Stack < int > s();
    return 0;
}



//Stack.h
#ifndef STACK_H
#define STACK_H
#include <iostream>

template < class T >
class Stack
{
public:
    Stack < T >();
    virtual ~Stack();
protected:
private:
};
#endif // STACK_H

//Stack.cpp
#include "Stack.h"

template < class T >
Stack < T >::Stack()
{
    std::cout << "KONSTRUKTOR\n";
}

template < class T >
Stack < T >::~Stack()
{
    //dtor
}
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?
P-129124
pekfos
» 2015-03-25 00:00:57
Definicje metod w nagłówku.

C/C++
Stack < int > s();
i bez nawiasów okrągłych.
P-129125
dek12
Temat założony przez niniejszego użytkownika
» 2015-03-25 08:33:32
Dałem tak:
C/C++
//main
#include <iostream>
#include "Stack.h"
using namespace std;

int main()
{
    Stack < int > s;
    return 0;
}


//stack.h
#ifndef STACK_H
#define STACK_H
#include <iostream>

template < class T >
class Stack
{
public:
    Stack < T >();
    virtual ~Stack < T >();
protected:
private:
};
#endif // STACK_H


//stack.cpp
#include "Stack.h"

template < class T >
Stack < T >::Stack()
{
    std::cout << "KONSTRUKTOR\n";
}

template < class T >
Stack < T >::~Stack()
{
    //dtor
}

to mam :
main.cpp|7|undefined reference to `Stack<int>::Stack()'|
main.cpp|8|undefined reference to `Stack<int>::~Stack()'|
P-129132
maly
» 2015-03-25 08:58:18
Definicje metod w nagłówku.
P-129133
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?
P-129135
maly
» 2015-03-25 09:07:18
Skoro wszystko musi być w nagłówku to po co w ogóle .cpp?
P-129136
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.
P-129148
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.
P-129150
« 1 » 2
  Strona 1 z 2 Następna strona