C ++ Оператор и классы разрешения бинарных областей - PullRequest
0 голосов
/ 03 декабря 2010

Есть ли способ использовать «блочное» разрешение области действия класса в C ++, чтобы мне не приходилось писать один и тот же шаблонный код для каждой функции в файле реализации моего класса.

Я нахожу крайне повторным писать одно и то же имя класса и оператор разрешения двоичной области видимости (Classname: :) ​​при определении функции вне файла заголовка в C ++.

В Objective-C мне нужно только включить функции в блок @ creation / @ 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();
}

1 Ответ

3 голосов
/ 03 декабря 2010

Нет, если вы не реализуете все это в заголовке определения класса (что обычно не следует делать).

Технически вы можете взломать его с помощью макросов, но все остальные, глядя на код, будут ненавидетьты за это.Вам придется привыкнуть к "C ++ way" здесь.

В зависимости от того, с какой IDE вы работаете, обычно есть инструменты (например, Visual Assist X для Visual Studio), которые помогаютВы генерируете часть шаблона из определения класса.

...