Ознакомьтесь с нашей политикой обработки персональных данных
13:21 

Трюк 0x0001 — Компактное объявление свойств класса

Куб 0
Зачастую в классе необходимо объявить так называемые "свойства" — пары функций, отвечающие лишь за считывание и запись внутренней переменной. Например, SetColor() и GetColor(), SetText() и GetText() и так далее. Когда таких функций много, их объявление превращается в скучную рутинную работу, да и интерфейс изрядно загромождается.
С помощью нехитрого макроса можно облегчить себе жизнь и сократить объем кода.

//------------------------------------------------------------
#define prop(Type, Name) \
private: Type m_##Name; \
public: \
Type Get##Name () { return m_##Name; } \
void Set##Name(Type Name) { m_##Name=Name; }
//------------------------------------------------------------
class SampleClass {
// объявляем свойства с помощью макроса
prop(int, Id);
prop(std::string, Comment);
prop(bool, CacheEnabled);
// объявляем методы класса
SampleClass(std::string Comment, bool CacheEnabled=false, int Id=-1) {
SetComment(Comment);
SetCacheEnabled(CacheEnabled);
SetId(Id);
}
bool HasValidId() {
if (GetId()<=0) {
return false;
}
return true;
}
};
//------------------------------------------------------------

@темы: Лень как двигатель прогресса

URL
Комментарии
2009-10-04 в 06:15 

Не дай БОГ такое встретить =)
повергнет в шок.... (Абстракция не очень, так себе)

(Макрос то объявиться только в 1 месте, которое удачненько запрячется / затеряется.)

Вообщем если пишите не только для себя.... лучше ненадо

URL
2010-09-10 в 01:01 

Куб 0
посмотрел код - улыбнуло)
за два года много чего поменялось.

URL
   

Записная книжка программиста C++

главная