E2018 'bezeichner' kann nicht erstellt werden -- mehrdeutige Basisklasse 'bezeichner' (C++)
Nach oben zu Compiler-Fehler und -Warnungen (C++) - Index
Eine Klasse mit mehr als eine Kopie einer (nicht virtuellen) Basisklasse kann nicht abgefangen werden. Sie können aber die Exception als einen abgeleiteten Typ abfangen. Zum Beispiel:
struct awkward : std::runtime_error, std::logic_error {}; try { } catch( std::exception & ) { // mehrdeutig, kann hier nicht abgefangen werden } catch( std::runtime_error & ) { // hier abgefangen }
Beachten Sie bitte, dass der Compiler eine Warnung dahingehend ausgeben könnte, dass das zweite Abfangen nicht ausgelöst werden kann, weil die erste Klausel alle entsprechenden Exceptions abfangen sollte. Der mehrdeutige Basisfall wird aber von der zweiten Klausel abgefangen.