Gibt es eine spezielle Möglichkeit, C ++ Konstruktoren (und Destruktoren) zu deklarieren / definieren?

8

EDIT: Dies ist eine Diskussion über Best Practice in dem unten dargestellten (vereinfachten) Fall. Welches Werkzeug, welcher Codierungsstil oder was auch immer Sie vorschlagen möchten, posten Sie es. Danke.

Warum gibt es keine speziellen Möglichkeiten, Ctors / Dtors zu deklarieren oder zu definieren, ohne den Namen der Klasse zu duplizieren? Es ist ärgerlich, vor allem beim Prototyping und am Ende, den Namen der Klasse zu ändern.

Was ich meine, ist etwas mit typedef wie folgt:

%Vor%

Es funktioniert nur für ctors und nur auf MSVC; Ich benutze es und obwohl es kein großes Feature ist, macht es das Leben einfacher. Dies ist ein triviales Beispiel, aber stellen Sie sich eine ziemlich komplizierte Struktur vor. (Ein praktischer Nebeneffekt ist auch, dass Sie einen Alias ​​in der Klasse haben, ohne seinen Namen verfolgen zu müssen.) Fehle ich etwas? Bin ich wirklich der einzige, der das braucht? Der Punkt ist nicht, ob es kompiliert, der Punkt ist, dass ich es teilweise überall für mich arbeiten lasse und es Wunder tut. Bis ich den Standard erreiche ... (Dies ist keine Compliance-Diskussion.)

    
ActiveTrayPrntrTagDataStrDrvr 29.02.2012, 14:41
quelle

2 Antworten

6

Schon mal von Suchen und Ersetzen gehört?

Ich nehme an, dass die meisten Leute entweder ex , vim , sed verwenden. etc: s/search/replace/g oder äquivalent, um den Namen ihrer Klassen zu ändern, oder ändern Sie sie nicht so, dass sie durch das Fehlen dieser Funktion oft gestört werden.

Sie könnten eine #define verwenden, um dies zu tun:

%Vor%

Was mich verärgert, ich stimme zu, ist das Fehlen einer Standardmethode, um auf die Basisklasse (n) eines Typs zu verweisen - ich normalerweise privat typedef ... base_t in Klassen, dann verwende das für Initialisiererlisten usw .

    
James 29.02.2012 14:47
quelle
3

Wenn Ihre Klassennamen frustrierend langatmig werden, sollten Sie mehr namespace verwenden.

namespace , kombiniert mit using , ist großartig, um Ihre Typnamen nur so ausführlich zu machen, wie es der jeweilige Kontext erfordert.

%Vor%     
Drew Dormann 29.02.2012 15:20
quelle