Maverick82^
16-12-2002, 20:14
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> >)'". Vi chiede scusa se c'è qualche errore "grave"...
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..
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..