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

linker error...zasto?

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

[ Pregleda: 4141 | Odgovora: 13 ] > FB > Twit

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 - pre 234 meseci
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
 
Odgovor na temu

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


+3 Profil

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

f
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

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



+6 Profil

icon Re: linker error...zasto?24.01.2005. u 14:16 - pre 234 meseci
A pošalji i definiciju operatora << van klase. Da je nisi zaboravio?
 
Odgovor na temu

Angry-Someone

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



Profil

icon Re: linker error...zasto?24.01.2005. u 17:11 - pre 234 meseci
to se meni događalo ako sam odabrao nova aplikacija umjesto console i problemi sa tform kod istog ;)
 
Odgovor na temu

svoo
Milan Svitlica
Banja Luka

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



Profil

icon Re: linker error...zasto?25.01.2005. u 12:23 - pre 234 meseci
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
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

icon Re: linker error...zasto?25.01.2005. u 20:11 - pre 234 meseci
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? :)
 
Odgovor na temu

NeznamTkoSam

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



Profil

icon Re: linker error...zasto?08.02.2005. u 20:53 - pre 233 meseci
A sto znace oni parametri linkeru (npr. -lmsimg32)?
 
Odgovor na temu

ivbrcic
Ivan Brcic
Siemens
Zagreb

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



Profil

icon Re: linker error...zasto?09.02.2005. u 08:31 - pre 233 meseci
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 ...>
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

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


Ne moraš. Dovoljan je par uglastih zagrada.
 
Odgovor na temu

ivbrcic
Ivan Brcic
Siemens
Zagreb

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



Profil

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

 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

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

ivbrcic
Ivan Brcic
Siemens
Zagreb

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



Profil

icon Re: linker error...zasto?10.02.2005. u 13:41 - pre 233 meseci
Hvala, priznajem sada "ne moras".
 
Odgovor na temu

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


+3 Profil

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

f
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

icon Re: linker error...zasto?10.02.2005. u 14:29 - pre 233 meseci
...nad samim sobom.
 
Odgovor na temu

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

[ Pregleda: 4141 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

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