воскресенье, 02 марта 2008

Зачастую в классе необходимо объявить так называемые "свойства" — пары функций, отвечающие лишь за считывание и запись внутренней переменной. Например, 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; } }; //------------------------------------------------------------
|
@темы:
Лень как двигатель прогресса
повергнет в шок.... (Абстракция не очень, так себе)
(Макрос то объявиться только в 1 месте, которое удачненько запрячется / затеряется.)
Вообщем если пишите не только для себя.... лучше ненадо
за два года много чего поменялось.