Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

linker error...zasto?

[es] :: C programiranje :: linker error...zasto?

[ Pregleda: 1742 | Odgovora: 13 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

svoo
Milan Svitlica
Banja Luka

Član broj: 44903
Poruke: 22
*.etfbl.net.



Profil

icon linker error...zasto?24.01.2005. u 11:11

Kad u dole navedenom kodu funkciju za preklapanje operatora definisem izvan tjela klase program se kompajlira ali je javlja linker error.

Jel ima neko logicno objasnjenje...?

code:
/////////////////////////
using namespace std;
template<class T1,class T2>
class Par{
private:
T1 first;
T2 second;
public:
Par(){};
Par(T1 aa,T2 bb):first(aa),second(bb){}
void print();
friend ostream& operator<<(ostream &os,const Par<T1,T2>&par){
os<<"( "<<par.first<<", "<<par.second<<" ) ";
return os;
}
};
template<class T1,class T2>
void Par<T1,T2>::print(){
cout<<first;
cout<<second;
}




int main(int argc, char* argv[])
{
Par<int,int> pr(56,45);
cout<<pr;//ovo radi ... kad se definise unutar klase....
cin.get();
return 0;
}

unaprijed hvala

pozdrav
24.01.2005. u 11:11 

filmil
Filip Miletić
Oce Technologies B.V., inženjer hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl.

Jabber: filmil@jabber.org
ICQ: 36601391


Profil

icon Re: linker error...zasto?24.01.2005. u 13:42
Pošalji i tekst greške, da ne bismo morali da čitamo misli.

f
24.01.2005. u 13:42 

Dragi Tata

Član broj: 1958
Poruke: 3899
*.bos.east.verizon.net.

Sajt: www.novetehnologije.com


Profil

icon Re: linker error...zasto?24.01.2005. u 14:16
A pošalji i definiciju operatora << van klase. Da je nisi zaboravio?
24.01.2005. u 14:16 

Angry-Someone

Član broj: 46099
Poruke: 30
*.net.t-com.hr.



Profil

icon Re: linker error...zasto?24.01.2005. u 17:11
to se meni događalo ako sam odabrao nova aplikacija umjesto console i problemi sa tform kod istog ;)
I vješanje i ljepota ostavljaju čovjeka bez daha

http://4umladih.co.cc
24.01.2005. u 17:11 

svoo
Milan Svitlica
Banja Luka

Član broj: 44903
Poruke: 22
*.etfbl.net.



Profil

icon Re: linker error...zasto?25.01.2005. u 12:23
def izvan klase..

Code:

#include<iostream>
using namespace std;
template<class T1,class T2>
class Par{
   private:
       T1 first;
       T2 second;
   public:
      Par(){};
      Par(T1 aa,T2 bb):first(aa),second(bb){}
      void print();
      friend ostream& operator<<(ostream &,const Par<T1,T2>&);

};
template <typename T1,typename T2>
ostream& operator<<(ostream &os,const Par<T1,T2>&par){
          os<<"( "<<par.first<<", "<<par.second<<" ) ";
          return os;
}    
template<class T1,class T2>
void Par<T1,T2>::print(){
    cout<<first;
    cout<<second;
}    




linker error
Code:

  [Linker error] undefined reference to `operator<<(std::ostream&, Par<int, int> const&)' 


// filmil: code tagovi
25.01.2005. u 12:23 

Dragi Tata

Član broj: 1958
Poruke: 3899
66.228.70.*

Sajt: www.novetehnologije.com


Profil

icon Re: linker error...zasto?25.01.2005. u 20:11
Welcome to the world of friend templates ;)

Doteraj deklaraciju operatora da izgleda ovako (obrati pažnju na dodatni par uglastih zagrada):

Code:

friend ostream& operator<< <>(ostream &,const Par<T1,T2>&);


Ko kaže da je C++ komplikovan jezik? :)
25.01.2005. u 20:11 

NeznamTkoSam

Član broj: 39660
Poruke: 280
*.cmu.carnet.hr.



Profil

icon Re: linker error...zasto?08.02.2005. u 20:53
A sto znace oni parametri linkeru (npr. -lmsimg32)?
08.02.2005. u 20:53 

ivbrcic
Ivan Brcic
Zagreb

Član broj: 38567
Poruke: 35
*.siemens.at.



Profil

icon Re: linker error...zasto?09.02.2005. u 08:31
Evo rjesenja, sada radi.

Code:

#include<iostream>

using namespace std;

template<typename T1,typename T2>
class Par {
    T1 first;
    T2 second;
public:
    Par() { }
    Par(T1 aa,T2 bb) : first(aa), second(bb) { }
    void print() const;
    template <typename T1,typename T2>
    friend ostream & operator<< (ostream &os,const Par<T1, T2> &par);

};

template <typename T1,typename T2>
ostream & operator << (ostream &os, const Par<T1, T2> &par)
{
    os<<"( "<<par.first<<", "<<par.second<<" ) ";
    return os;
}

template<class T1,class T2>
void Par<T1,T2>::print() const
{
    cout<<first;
    cout<<second;
}

int main ()
{
    Par<int,int> pr(56,45);
    cout << pr;                //ovo radi sada uvijek
}


Znaci kada pises friend funkciju tada i unutar klase moras navesti template <typename ...>
09.02.2005. u 08:31 

Dragi Tata

Član broj: 1958
Poruke: 3899
66.228.70.*

Sajt: www.novetehnologije.com


Profil

icon Re: linker error...zasto?09.02.2005. u 13:21
Citat:
ivbrcic
Znaci kada pises friend funkciju tada i unutar klase moras navesti template <typename ...>


Ne moraš. Dovoljan je par uglastih zagrada.
09.02.2005. u 13:21 

ivbrcic
Ivan Brcic
Zagreb

Član broj: 38567
Poruke: 35
*.siemens.at.



Profil

icon Re: linker error...zasto?10.02.2005. u 07:43
Ako mi to pronades u standardu, onda cu priznati da "ne moras".

10.02.2005. u 07:43 

Dragi Tata

Član broj: 1958
Poruke: 3899
66.228.70.*

Sajt: www.novetehnologije.com


Profil

icon Re: linker error...zasto?10.02.2005. u 13:07
Pogledaj odeljak 14.5.3 standarda, ili još bolje odeljak 8.4.1 knjige C++ Templates: The Complete Guide
10.02.2005. u 13:07 

ivbrcic
Ivan Brcic
Zagreb

Član broj: 38567
Poruke: 35
*.siemens.at.



Profil

icon Re: linker error...zasto?10.02.2005. u 13:41
Hvala, priznajem sada "ne moras".
10.02.2005. u 13:41 

filmil
Filip Miletić
Oce Technologies B.V., inženjer hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.decis.nl.

Jabber: filmil@jabber.org
ICQ: 36601391


Profil

icon Re: linker error...zasto?10.02.2005. u 14:27
Život je pun malih svakodnevnih pobeda...

f
10.02.2005. u 14:27 

Dragi Tata

Član broj: 1958
Poruke: 3899
66.228.70.*

Sajt: www.novetehnologije.com


Profil

icon Re: linker error...zasto?10.02.2005. u 14:29
...nad samim sobom.
10.02.2005. u 14:29 

[es] :: C programiranje :: linker error...zasto?

[ Pregleda: 1742 | Odgovora: 13 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.