E2018 : Impossible d'intercepter 'identificateur' -- 'identificateur' de classe de base ambigu (C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Erreurs et avertissements du compilateur (C++) - Index

Il est illégal d'intercepter une classe qui contient plusieurs copies d'une classe de base (non virtuelle). Toutefois, vous pouvez intercepter l'exception comme un type plus dérivé. Par exemple :


struct awkward : std::runtime_error, std::logic_error {};

 try {
 }
 catch( std::exception & ) { // ambigu, pas d'interception ici
 }
 catch( std::runtime_error & ) { // interception ici
 }

Notez que le compilateur peut vous prévenir que la seconde interception ne peut pas être déclenchée car la première clause doit intercepter toutes les exceptions correspondantes. Mais le cas de base ambigu est intercepté par la seconde clause.