|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Salerno
Messaggi: 649
|
Principiante chide aiuto in c++
Salve ragazzi, sono un principiante di c++. Volevo chidervi un aiutino. Il codice che ora elenco è una bozza di una classe Coda, magari con qualche errore logico. Bene non so perchè sul DevC++ di windows il compilatore non mi da nessun errore, mentre su qualsiasi versione del g++ su Linux mi da il seguente errore:"undefined reference to 'Coda::Coda[in-charge](std::vector<int, std::allocator<int> >
Coda.h: #include <vector> #include <string> #include "Nodo.h" class Coda { public: Coda(vector<int> Nodo* insert(int); bool isEmpty() {return testa==0;} private: Nodo *testa; } ; ----------------------------------------------------------------------------------------- Coda.cpp: #include <vector> #include <string> #include "Coda.h" #include "Nodo.h" Coda::Coda(vector<int>v) { for(int i=v.size()-1; i>0; i--) insert(v[i]); testa=insert(v[0]); } Nodo* Coda::insert( int i ) { Nodo *p=new Nodo(i); if(isEmpty()) testa=p; else { p->right=testa; testa->left=p; testa=p; } return testa; } ---------------------------------------------------------------------------------------- Nodo.h: #ifndef _CODA_H #define _CODA_H class Nodo { public: friend class Coda; Nodo(): elemento(0), left(0), right(0){} Nodo(int i): elemento(i), left(0), right(0){} Nodo(const Nodo& ); int getElement(){return this->elemento;} private: int elemento; Nodo *left; Nodo *right; }; #endif ---------------------------------------------------------------------------------------- Nodo.cpp: #include "Nodo.h" Nodo::Nodo(const Nodo& n){ elemento=n.elemento; left=n.left; right=n.right; } ----------------------------------------------------------------------------------------- Main.cpp: #include <iostream.h> #include <vector.h> #include <string> #include "Nodo.h" #include "Coda.h" int main() { vector<int>v(2,4); Coda f(v); // <-- quando viene invocato il costruttore appare l'errore che ho detto prima, ma solo sul g++!!?? Nodo test(5); cout << test.getElement(); system("PAUSE"); return 0; } Grazie..
__________________
Ho concluso positivamente con : yellope, simpon, angelomavino, EltricBlue, gridalo, fastez, irK, fabio536,Reiser Darkside, AMING, Mystik85
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Salerno
Messaggi: 649
|
Nessuno sa qual è l'errore?
__________________
Ho concluso positivamente con : yellope, simpon, angelomavino, EltricBlue, gridalo, fastez, irK, fabio536,Reiser Darkside, AMING, Mystik85
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Genova
Messaggi: 192
|
Potrebbe trattarsi di un problema di link, poichè utilizzi classi definite in più file.
Quando compili su Linux usi un makefile oppure fai qualcosa del genere gcc coada.cpp? Gio |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Re: Principiante chide aiuto in c++
Quote:
Nota che non devi linkare con gcc, ma con g++ (oppute con gcc -lstdc++). Io ho compilato tranquillamente con g++ -o coda coda.cpp nodo.cpp main.cpp
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
potresti scrivere il comando intero che dai per la compilazione? a occhio ho l'impressione che non trovi il file cpp per cui trova nell'header la dichiarazione di una funzione di cui non trova poi lìimplementazione.
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
Re: Principiante chide aiuto in c++
Quote:
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
No, in quanto i tre file cpp vengono compilati e linkati staticamente, non è possibile che non ti funzioni...non è che ti manca qualche pacchetto?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:10.










Ho concluso positivamente con : yellope, simpon, angelomavino, EltricBlue, gridalo, fastez, irK, fabio536,Reiser Darkside, AMING, Mystik85








