E2018 'bezeichner' kann nicht erstellt werden -- mehrdeutige Basisklasse 'bezeichner' (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

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.