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'