In Visual Studio verwende ich Objekte oft nur für RAII Zwecke. Zum Beispiel:Umgang mit C++ - Warnung "initialisiert, aber nicht referenziert" zur Zerstörung von Scope-Helfern?
ScopeGuard close_guard = MakeGuard(&close_file, file);
Der ganze Zweck der close_guard ist, um sicherzustellen, dass die Datei auf Funktion Ausgang in der Nähe sein wird, ist es nirgendwo anders verwendet wird. Visual Studio gibt jedoch eine Warnung, dass eine "lokale Variable initialisiert aber nicht auf verwiesen wird". Ich möchte diese Warnung für diesen speziellen Fall deaktivieren.
Wie gehen Sie mit dieser Situation um? Visual Studio denkt, dass dieses Objekt nutzlos ist, aber das ist falsch, da es einen nicht-trivialen Destruktor hat.
Ich würde nicht eine #pragma Warnung Direktive dafür verwenden wollen, da es diese Warnung sogar aus legitimen Gründen abstellen würde.
Konnten Sie den Code für ScopeGuard und MakeGuard (oder einige cut-down-Versionen, die noch das Verhalten aufweisen) veröffentlichen? –
Bitte lesen Sie http://www.ddj.com/cpp/184403758 für eine mögliche Implementierung. –
In welcher Version von MSVC sehen Sie dieses Verhalten? – MSN