2010-12-03 20 views
0

Existe-t-il un moyen d'utiliser la résolution de portée de classe "bloc" en C++ afin que je n'aie pas à écrire le même code pour chaque fonction du fichier d'implémentation de ma classe. Je trouve extrêmement répétitif d'écrire le même nom de classe et l'opérateur de résolution d'étendue binaire (Classname: :) ​​lors de la définition d'une fonction en dehors du fichier d'en-tête en C++.Opérateur et classes de résolution d'oscilloscope binaire C++

En Objective-C, j'ai seulement besoin d'inclure des fonctions dans le bloc @ implementation/@ end.

Objective-C Exemple:

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

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

C++ Exemple

// 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

N'est-ce pas ce que vise Objective-C++? Vous laisser utiliser le code C++ dans les programmes Objective C? –

+0

De toute façon, le chemin C++ n'est pas plus court. À 21 caractères '@implementation @end ' Vous avez besoin de quatre méthodes sur une classe avec un nom de longueur de 4 caractères avant que C++ devienne plus onéreux à taper. –

+0

@Mike Je ne pense pas que vous compreniez la question, il ne s'agit pas d'utiliser le code C++ dans Objective-C. J'aime Objective-C parce que j'ai moins de code à écrire. J'utilise à la fois Objective-C/C++ dans mon projet actuel, et je suis juste frustré par le nombre d'erreurs que je rencontre dans le même code standard. –

Répondre

3

Non, à moins que vous mettre en œuvre tout dans l'en-tête dans la définition de la classe (que vous devriez généralement pas). Techniquement, vous pouvez le pirater avec des macros, mais tout le monde qui regarde le code vous détesterait pour cela. Vous devrez vous habituer à "le chemin C++" ici. En fonction de l'EDI avec lequel vous travaillez, il existe généralement des outils (par exemple, Visual Assist X pour Visual Studio) qui vous aident à générer une partie de la définition de classe.

+0

Je trouve ça un peu frustrant, mais je peux m'en occuper. J'utilise l'approche pilotée par les tests, donc je ne remplace pas toute la classe. Je ne travaille que sur un ou deux talons de méthode à la fois, j'écris les tests unitaires, puis l'implémentation. –

+0

@Paul: Avec des outils décents, ce n'est pas un gros problème: vous pouvez par exemple. déclarez une méthode et choisissez l'entrée "Générer l'implémentation" dans le menu contextuel. –

+0

Je ne suis pas au courant d'un mécanisme de génération pour Xcode. Je travaille principalement sur le côté Mac des choses, je n'ai pas de belles choses comme Visual Studio. –