C++ template - POMOC!
Prikazujem rezultate 1 do 2 od 2

Tema: C++ template - POMOC!

  1. #1
    Početnik Magog (avatar)
    Učlanjen
    04.09.2005.
    Lokacija
    u oblacima
    Poruke
    36
    Reputaciona moć
    0

    Podrazumevano C++ template - POMOC!

    Molim Vas za hitno objasnjenje!!!!!

    Kad ovaj kod napisem bez template-a sve funkcionise OK, ali kad ubacim template, greske se javljaju. Naime, dok u main f-ji ne napisem vektor[i]=i sve funkcionira. Kad to napisem prilkom linkovanja mi prijavi dole navedenu gresku. Isto se desava ako probam sa pozivanjem f-je print sa vektor.print(); Verovatno je neki problem usled neadekvatnog oznacavanja template i pozivanja f-ja s njima ali ja vec duze vreme ne mogu da skapiram u cemu gresim problem. Molim Vas, ako neko moze da pojasni ovo i da izgubi malo vremena, bio bih veoma zahvalan !!! H V A L A U N A P R E D !!!!

    [font=Arial]





    template <class T>

    class Array {

    protected:
    T *data;
    long base;
    unsigned long length;
    public:
    Array(long m, long l) {
    length=l;
    data=new T[l];
    base=m;
    }

    Array(long l) {length=l; data=new int[l]; base=0; }

    ~Array() {delete [] data;}

    void print ();



    operator= (Array<T>& array);
    T& operator[](long index);

    [/font]};

    ************************************************** ***********

    template <class T>
    void Array<T>:rint() {
    if (length>10) throw new SBPException("*** Index out of bound!");
    for(unsigned long i=0; i<length; i++)
    cout<<"data["<<i<<"]="<<data[i]<<endl;
    }



    template <class T>
    Array<T>:perator= (Array<T>& array) {
    if (&array != this) {
    if (length !=array.getLength()) {
    length= array.getLength();
    data=new T[length];
    }
    for (unsigned long i=0; i<length; i++)
    data[i]=array.data[i];
    base=array.getBase();
    }

    }


    template <class T>
    T& Array<T>:perator [](long index) {
    unsigned long offset=index-base;
    if (offset>=length)
    throw new SBPException("*** Index out of bound!");
    return data[offset];
    }



    ***********************************************



    #include <iostream.h>

    #include "polja.h"

    void main() {



    Array<int> vektor(10); int dim;
    cout<<"Unesi dimenziju: "; cin>>dim;
    for (int i=0; i<dim; i++) vektor[i]=i;


    }





    --------------------Configuration: polja - Win32 Debug--------------------

    Compiling...

    poljaiz.cpp

    Linking...

    poljaiz.obj : error LNK2001: unresolved external symbol "public: int & __thiscall Array<int>:perator[](long)" (??A?$Array@H@@QAEAAHJ@Z)

    Debug/polja.exe : fatal error LNK1120: 1 unresolved externals

    Error executing link.exe.

    polja.exe - 2 error(s), 0 warning(s)





    [font=Arial]

    [/font]



  2. #2
    Primećen član
    Učlanjen
    04.03.2004.
    Lokacija
    UK
    Poruke
    558
    Reputaciona moć
    56

    Podrazumevano Re: C++ template - POMOC!

    Ne znam chime si ovo kompajlirao, ali uz male izmene program bi trebao da radi :

    1. ako prijavljuje "unresolved external" greshku proveri da li je i deklaracija i implementacija templejta u ISTOM fajlu (tj. hederu). Ne razumem da li one zvezdice znache odvojene fajlove.

    2. operator=() po C++ standardu vraca referencu na this. Znachi promeni deklaraciju (i implementaciju) u :
    Array& operator=(const Array& arr);

    Sa ovim izmenama ce sigurno kompajlirati kako valja (pod uslovom da si u heder fajl ukljuchio pozive ovih funkcija i klase izuzetaka koje koristish)

Slične teme

  1. Template
    Autor rajkec u forumu Web dizajn
    Odgovora: 1
    Poslednja poruka: 07.03.2006., 23:23
  2. Power Point template
    Autor Kornel u forumu Softver
    Odgovora: 2
    Poslednja poruka: 03.03.2006., 19:28
  3. U vezi web site template
    Autor VictorySun u forumu Web dizajn
    Odgovora: 9
    Poslednja poruka: 01.01.2006., 17:30
  4. Kako u Word-u do template
    Autor tiv u forumu Softver
    Odgovora: 3
    Poslednja poruka: 13.05.2005., 13:15
  5. Template ...
    Autor rossoner u forumu Web dizajn
    Odgovora: 12
    Poslednja poruka: 21.06.2004., 14:43

Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •