0

クラスの実装ファイル内のすべての関数に同じ定型コードを記述する必要がないように、C++で「ブロック」クラススコープ解決を使用する方法はありますか。

C ++でヘッダーファイルの外部に関数を定義するときに、同じクラス名とバイナリスコープ解決演算子(Classname ::)を記述することは非常に繰り返しになります。

Objective-Cでは、@implementation /@endブロック内に関数を含めるだけで済みます。

Objective-Cの例:

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

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

C++の例

// 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();
}
4

1 に答える 1

3

いいえ、クラス定義のヘッダーにすべてを実装する場合を除きます(通常は実装しないでください)。

技術的にはマクロでハックすることもできますが、コードを見ている他の人は誰もがあなたを嫌うでしょう。ここでは「C++の方法」に慣れる必要があります。

使用するIDEに応じて、通常、クラス定義からボイラープレートの一部を生成するのに役立つツール(VisualStudio用のVisualAssist Xなど)があります。

于 2010-12-03T16:01:46.270 に答える