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

Problem z pojemnikami !!

Ostatnio zmodyfikowano 2013-04-06 17:12
Autor Wiadomość
fers334
Temat założony przez niniejszego użytkownika
Problem z pojemnikami !!
» 2013-04-06 17:06:07
Siemka mam problem mianowicie mam klase szablonowa wektor chce jej cialo umiescic w pliku naglownkowym , natomiast funkcje skladowe w pliku cpp jest jednak problem ze przy tym zabiegu wyskakuje blad linkera. Wystepuje on tylko przy uzyciu szablonow oraz gdy rozdzielam plik na 2 czesci gdy jest wszystko razem dziala . Prosze o pomoc jak to rozwiazac by umiescic to w 2 plikach cpp,h.

Oto kod :

Plik wektor.h
C/C++
#ifndef wektor_H
#define wektor_H

template < class typ >
class pojemnik
{
private:
    typ * wsk_obiekt;
   
    int rozmiar_tabl;
    int aktualny_obiekt;
   
public:
    pojemnik();
    bool ustaw_rozmiar( int rozmiar );
   
   
   
    // ---------- Operatory ------------ //
    typ & operator []( int nr );
    typ & operator ++();
    typ & operator ++( int );
    typ & operator --();
    typ & operator --( int );
};
#endif
plik wektoc.cpp
C/C++
#include "wektor.h"

template < class typ >
pojemnik < typ >::pojemnik()
{
    wsk_obiekt = NULL;
    rozmiar_tabl = 0;
    aktualny_obiekt = 0;
}
// ------------------------------------------------------------- //

template < class typ >
bool pojemnik < typ >::ustaw_rozmiar( int rozmiar )
{
    if( rozmiar_tabl == 0 )
    {
        wsk_obiekt = new typ[ rozmiar ];
        return true;
    }
    else return false;
   
}
// ------------------------------------------------------------- //
template < class typ >
typ & pojemnik < typ >::operator []( int nr )
{
    if( nr > rozmiar_tabl ) { return NULL; }
    else { return wsk_obiekt[ nr ]; }
}
template < class typ >
typ & pojemnik < typ >::operator ++()
{
    aktualny_obiekt++;
    return wsk_obiekt[ aktualny_obiekt ];
}
template < class typ >
typ & pojemnik < typ >::operator ++( int )
{
    int stary_obiekt = aktualny_obiekt;
    ++* this;
    return wsk_obiekt[ stary_obiekt ];
}
template < class typ >
typ & pojemnik < typ >::operator --()
{
    aktualny_obiekt--;
    return wsk_obiekt[ aktualny_obiekt ];
}
template < class typ >
typ & pojemnik < typ >::operator --( int )
{
    int stary_obiekt = aktualny_obiekt;
    --* this;
    return wsk_obiekt[ stary_obiekt ];
}
// ---------------------------------------------------//

Oto komunikat o bledzie :
main.obj : error LNK2019: unresolved external symbol "public: __thiscall pojemnik<int>::pojemnik<int>(void)" (??0?$pojemnik@H@@QAE@XZ) referenced in function _SDL_main

Prosze o pomoc z gory dzieki :)
P-80073
pekfos
» 2013-04-06 17:12:29
Implementacja szablonu musi być w pliku nagłówkowym.
P-80074
« 1 »
  Strona 1 z 1