Ich habe ein globales Objekt in derselben Quelldatei wie main (): < /p>
DSS::TraceControl traceControl{ std::source_location::current().file_name() };
< /code>
, das meine Anwendungsverfolgung vor main () startet. < /p>
Das funktioniert einwandfrei. Der DTOR sagt: < /p>
TraceControl::~TraceControl()
{
OutputDebugStringA("TraceControl destructor\n");
if (erase)
{
OutputDebugStringA("erase is true: Erasing trace file\n");
std::error_code ec;
fs::remove(file, ec);
if (ec)
{
OutputDebugStringA("Error removing trace file\n");
}
else
{
OutputDebugStringA("Trace file erased\n");
}
}
else
{
OutputDebugStringA("erase is false\n");
}
}
< /code>
Wenn ich das Programm ohne Debugger Active (Visual Studio oder Windbg) ausführe, wird der DTOR nicht ausgeführt, wenn ich die Anwendung schließe. Wenn ich jedoch unter einem Debugger und < /em> einen Breakpoint im dtor habe, ist es? Beenden Sie?>
Ich habe ein globales Objekt in derselben Quelldatei wie main (): < /p> DSS::TraceControl traceControl{ std::source_location::current().file_name() }; < /code> , das meine Anwendungsverfolgung vor main () startet. < /p> Das funktioniert einwandfrei. Der DTOR sagt: < /p> TraceControl::~TraceControl() { OutputDebugStringA("TraceControl destructor\n"); if (erase) { OutputDebugStringA("erase is true: Erasing trace file\n"); std::error_code ec; fs::remove(file, ec); if (ec) { OutputDebugStringA("Error removing trace file\n"); } else { OutputDebugStringA("Trace file erased\n"); }
} else { OutputDebugStringA("erase is false\n"); } } < /code> Wenn ich das Programm ohne Debugger Active (Visual Studio oder Windbg) ausführe, wird der DTOR nicht ausgeführt, wenn ich die Anwendung schließe. Wenn ich jedoch unter einem Debugger und < /em> einen Breakpoint im dtor habe, ist es? Beenden Sie?>
Ich schreibe ein sehr einfaches textbasiertes Fluchtspiel, um die Grundlagen zu üben, die ich bisher gelernt habe. Ich führe es gerade in einem Online -Redakteur aus. Ich hatte Probleme,...
Ich weiß, dass ein Destruktor in C ++ keinen Wert zurückgibt und sein Typ kann nicht explizit angegeben werden. ist gemäß dem C ++ - Standard korrekt. #include
#include