GCC Warnung dektivieren
-
Hoi
In meinem Projekt erbe ich von boost::iterator_facade, welches allerdings keinen virtuellen Destruktor hat.
Das produziert dutzende Warnungen.
Wie könnte ich die Warnung unterdrücken?warning: base class ‘class boost::iterator_facade<Ethon::MemoryRegionIterator, Ethon::MemoryRegion, boost::forward_traversal_tag, Ethon::MemoryRegion&, long int>’ has a non-virtual destructor
Grüße,
Ethon
-
Vermutlich könnte man diese Warnungen mit -Wno-non-virtual-dtor abschalten, aus http://gcc.gnu.org/onlinedocs/gcc-4.5.2/gcc/C_002b_002b-Dialect-Options.html#C_002b_002b-Dialect-Options :
-Wnon-virtual-dtor (C++ and Objective-C++ only)
Warn when a class has virtual functions and accessible non-virtual destructor, in which case it would be possible but unsafe to delete an instance of a derived class through a pointer to the base class. This warning is also enabled if -Weffc++ is specified.
-
Danke für die Antwort
Hab es probiert, klappt so nicht
Außerdem wäre es mir lieber, die Warnung nur in meinen Fällen zu deaktivieren ... in anderen Fällen kann sie ja durchaus berechtigt sein.
Also, als #pragma oä. Hab dazu aber nichts gefunden.
-
Nicht erben ...
-
Was aber der Sinn von boost::iterator_facade ist ...
-
@Ethon: Kannst du uns bitte die komplette Zeile mit dem Aufruf von g++ mit allen Parametern "copypasten"?
-
Ich benutze Code:Blocks.
Aber hier sind alle flags enthalten:
<Build>
<Target title="Debug">
<Option output="bin/Debug/lml" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
</Compiler>
</Target>
<Target title="Release">
<Option output="bin/Release/lml" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Release/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-fexpensive-optimizations" />
<Add option="-O3" />
</Compiler>
</Target>
</Build>
<Compiler>
<Add option="-Wmain" />
<Add option="-pedantic" />
<Add option="-W" />
<Add option="-Wall" />
<Add option="-Weffc++" />
<Add option="-std=c++0x" />
<Add option="-Wextra" />
<Add option="-fexceptions" />
</Compiler>
<Linker>
<Add library="boost_system" />
<Add library="boost_filesystem" />
</Linker>
-
Ethon schrieb:
Add option="-Weffc++"
Aha, vermutlich aktiviert diese Option deine Warnungen. Wenn du sie weglässt oder mit -Wno-effc++ ersetzt o.ä. sollte es keine Warnungen mehr geben.
-
Danke