2010-12-03 18 views
0

Gibt es eine Möglichkeit, die Klassenauflösung "Block" in C++ zu verwenden, damit ich nicht für jede Funktion in der Implementierungsdatei meiner Klasse den gleichen Standardcode schreiben muss.C++ Binärer Scope Resolution Operator und Klassen

Ich finde es extrem repetitiv, den gleichen Klassennamen und binären Scope-Auflösung-Operator (Classname: :) ​​zu schreiben, wenn Sie eine Funktion außerhalb der Header-Datei in C++ definieren.

In Objective-C muss ich nur Funktionen in den @ implementation/@ end Block einfügen.

Objective-C Beispiel:

// Buttons.h 
@interface Buttons : UIView { 
    NSMutableArray *buttonArray; 
} 
- (int)getNumberButtons; 

// Buttons.m 
#import "Buttons.h" 
@implementation 
- (int)getNumberButtons 
{ 
    return [buttonArray count]; 
} 
@end // End implemenation 

C++ Beispiel

// Buttons.h 
class Buttons { 
public: 
    int getNumberOfButtons() const; 
protected: 
    std::vector<Button> buttons; 
}; 
// Buttons.cpp 
#include "Buttons.h" 
int Buttons::getNumberOfButtons() const { 
    return buttons.size(); 
} 
+0

Ist das nicht, was Objective-C++ ist? Lassen Sie C++ - Code in Objective-C-Programmen verwenden? –

+0

Ist das C++ sowieso nicht kürzer? Bei 21 Zeichen @implementation @end 'Sie benötigen vier Methoden für eine Klasse mit einem Namen der Länge 4 Zeichen, bevor C++ mehr Mühe beim Tippen. –

+0

@Mike Ich glaube nicht, dass Sie die Frage verstehen, es geht nicht darum, C++ - Code in Objective-C zu verwenden. Ich mag Objective-C, weil ich weniger Code habe, um zu schreiben. Ich benutze sowohl Objective-C/C++ in meinem aktuellen Projekt, und ich bin nur frustriert mit der Anzahl der Fehler, die ich in Bezug auf den gleichen Standardcode habe. –

Antwort

3

Nein, es sei denn, Sie alles in der Kopfzeile in der Klassendefinition implementieren würden (was Sie in der Regel nicht sollen).

Technisch könnten Sie es mit Makros hacken, aber jeder andere, der sich den Code ansieht, würde Sie dafür hassen. Sie müssen sich an "C++ Weg" hier gewöhnen.

Je nachdem, mit welcher IDE Sie arbeiten, gibt es in der Regel Werkzeuge (z. B. Visual Assist X für Visual Studio), mit denen Sie einige der Muster aus einer Klassendefinition generieren können.

+0

Ich finde es ein bisschen frustrierend, aber ich kann damit umgehen. Ich verwende den Test-getriebenen Ansatz, also stemple ich nicht die gesamte Klasse aus. Ich arbeite jeweils nur an einem oder zwei Methoden-Stubs, schreibe die Komponententests und dann die Implementierung. –

+0

@Paul: Mit anständigen Werkzeugen ist das kein großes Problem: Sie könnten z.B. deklarieren Sie eine Methode und wählen Sie im Kontextmenü den Eintrag "Implementierung generieren". –

+0

Ich kenne keinen Generierungsmechanismus für Xcode. Ich arbeite hauptsächlich auf der Mac-Seite der Dinge, ich habe keine schönen Dinge wie Visual Studio. –

Verwandte Themen