Ho fatto la seguente classe per un tipo di eccezioni (ditemi se qualcosa non va bene):
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];
}
Perchè mi dà un errore di linker?
[Linker error] undefined reference to `xprException::errorMessages'