On Mon, May 14, 2007 at 06:14:18PM +0200, Konrad Rosenbaum wrote:
On Monday 14 May 2007, Jan Rakelmann wrote:
Hi Konrad,
und wenn es jetzt noch ein C/C++-Gegenstück zu Fortran95's ASSOCIATED(POINTER [,TARGET]) gibt könnte ich mich auch noch mit dem Gespann anfreunden. ,-)
#define ASSOCIATED(ptr) (ptr) != 0 #define ASSOCIATED(ptr,target) (ptr) == &(target)
Hab's nicht getestet, aber sollte so funktionieren:
Ich verstehe zwar nicht was an den Originalausdrücken so kompliziert ist, dass man sie unbedingt in ASSOCIATED kapseln muss, aber ok.
Ich nehme an das Fortran im Gegensatz zu C++ intern eine Liste der initialisierten Pointer hält (und diese Updated wenn ein Objekt gelöscht wird) und ASSOCIATED wirklich nachprüft ob der Pointer noch gültig ist.
So etwas wirst du in C++ trotz aller Template/Macro Magie nicht hinbekommen. Qt hat mit QPointer da zwar einen ganz netten Ansatz und STL bietet auch etwas ähnliches, aber ein solches Feature muss in der Laufzeitumgebung verangert sein, nicht auf der Sprache aufgesetzt.
Ciao, Tobias