C ++ макроопределение неясно - PullRequest
3 голосов
/ 03 июня 2010

Это определение макроса для класса или что это такое?

#define EXCEPTIONCLASS_IMPLEMENTATION(name, base, string) : public base     \
    {                                                               \
public:                                                                 \
    name() : base(string) {}                                            \
    name(const x::wrap_exc& next) : base(string,next) {};               \
    name(const x::wrap_exc& prev, const x::wrap_exc& next) :            \
        base(prev, next) {};                                            \
}

Ответы [ 2 ]

9 голосов
/ 03 июня 2010

Это - определение макроса для класса исключений.

Похоже, кто-то хочет, чтобы вы написали такой код:

class my_exception EXCEPTIONCLASS_IMPLEMENTATION(my_exception, std::exception, "What a mess!")

Препроцессор выплюнет:

class my_exception : public std::exception { public: my_exception() : std::exception("What a mess!") {} my_exception(const x::wrap_exc& next) : std::exception("What a mess!",next) {}; my_exception(const x::wrap_exc& prev, const x::wrap_exc& next) : std::exception(prev, next) {}; }

Что именно это такое?

Это мерзость!

3 голосов
/ 03 июня 2010

это макрос для исключения, который создает исключение со стандартными конструкторами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...