Geltend machen mit der dynamischen Botschaft?

In meinem Programm möchte ich behauptet, dass eine Fehlermeldung anzeigen. Abgesehen von den bekannten Problemumgehungen für C und C++ gibt es die "echte" Lösung als BOOST bietet BOOST_ASSERT_MSG( expr, msg ) (siehe auch assert() mit der Meldung)

Aber eine statische Nachricht ist nicht genug für mich, ich möchte auch zeigen, manchmal fehlgeschlagenen Variablen, z.B. in einem Fall wie

BOOST_ASSERT_MSG( length >= 0, "No positive length found! It is " << length )

Wie Sie sehen können ich möchte zum formatieren der Nachricht enthält "string" als stringstream oder ostream wie, dass würde mir erlauben, mich leicht zeigen, benutzerdefinierte Typen (vorausgesetzt, ich habe definiert die relevanten formatieren-Funktion).

Hier das problem, dass BOOST_ASSERT_MSG ist standardmäßig erfordern eine char const * so dass es nicht kompatibel ist.

Gibt es eine Möglichkeit neu zu definieren /überlast assertion_failed_msg() in der Weise, dass über einen stream als Nachricht funktionieren??? Wie?

(Mein naiver Ansatz gescheitert, da der compiler zuerst wollten operator<<("foo",bar) auf die Nachricht selbst...)

InformationsquelleAutor Chris | 2012-08-12
Schreibe einen Kommentar