Ho fatto la seguente classe per un tipo di eccezioni (ditemi se qualcosa non va bene):
Perchè mi dà un errore di linker?codice:class xprException { // Codice dell'errore unsigned int errCode; // Lista dei messaggi di errore. // errorMessages[x] sarà il messaggio dell'errore numero x. static myVector<string> errorMessages; // Serve un inizializzatore perchè non posso inizializzare un membro statico con degli oggetti (string) static void loadExceptions() { errorMessages.add("La divisione 0/0 restituisce un valore indeterminato."); errorMessages.add("Una divisione per 0 non ha significato."); } public: // Si può lanciare un'eccezione solo specificando il codice di errore. // Costruttore: xprException(unsigned int _errCode) { loadExceptions(); if(_errCode >= errorMessages.getSize()) throw string("Eccezione: vuoi lanciare un'eccezione che non esiste! Allora sei una banana in pigiama!"); errCode = _errCode; } // Inseritore, serve per scrivere la funzione. friend ostream &operator<<(ostream &stream, xprException toShow); }; // Amica di xprException, non membra per motivi pratici. ostream &operator<<(ostream &stream, xprException toShow) { stream << "Si e' verificato l'errore " << toShow.errCode << "!" << endl; stream << errorMessages[toShow.errCode]; }
[Linker error] undefined reference to `xprException::errorMessages'

Rispondi quotando
