PDA

View Full Version : problemi di undefined reference


ziph
22-10-2006, 04:35
ciao a tutti,
vi pongo un problema che spero sia di facile soluzione, (sto programmanda in c++ da 1 settimana) ,

sto cercando di implementare una libreria per risolvere il TSP su grafo tramite Ant Colony Optimization in c++, praticamente le formiche si muovono sul grafo e trovano la soluzione migliore aggiungendo "feromone" sui lati del percorso migliore (seguiranno VRP,vehicle routing problem, multiplo con capacità e time window e il PDP,pickup and delivery problem, è per la tesi!)

il problema è questo:

header classe formica:


class AntTSP {
public:
long int *tour;
char *visited;
long int tour_length;
long int n; //numero di passi nel tour
(nel tsp corrisponde al num città)

//puntatori alle variabili del problema AcoTSP utilizzate
static double **total;
static double q_0;
.....
.....vari metodi..



implementazione

#include "AntTSP.h"

AntTSP::AntTSP()
{
}

void AntTSP::init(long int num)
{
n = num;
tour = new long int[n+1];
visited = new char [n];
}

AntTSP::~AntTSP()
{
delete [] tour;
delete [] visited;
}

..metodi..

i membri static, che dovrebbero essere comuni a tutta la classe, vengono passati in un metodo di inizializzazione del problema, che ho chiamato AcoTSP, dopo aver creato un array di formiche, cioè riassumendo il metodo:


void AcoTSP::initialize(const char *tsp_file_name)
{
set_default_parameters();
TSP::initialize( tsp_file_name, nn); //viene inizializzato col metodo di TSP

//alloca la colonia
ant = new AntTSP[n_ants];

for (int i = 0 ; i < n_ants ; i++ )
{
ant[i].init(n);
}

//passo i parametri del problema alla colonia

AntTSP::total; //matrice del feromone
AntTSP::q_0=q_0;
...



il distruttore di AcoTSP fa il delete di ant.
Ora alla fine di tutta questa descrizione il problema è che in fase di link di un programma di prova che chiama i metodi di AcoTSP c'è un "link error undefined reference to Ant::total, Ant::q_0 ecc.." cioè di tutti i membri statici, ripetuti varie volte. Nei metodi di AcoTSP vengono chiamati metodi che lavorano sulle formiche che a loro volta utilizzano in lettura i membri statici della loro classe.

Qualcuno mi può aiutare? Vi ringrazio in anticipo.
ciaoo