У меня есть интерфейс, в котором содержимое каждой функции создается с помощью большого макроса. Если программист добавляет новую функцию и забывает добавить эту функцию в класс интерфейса, это создает много ошибок компиляции, которые отвлекают от фактической ошибки.
Можно ли во время компиляции утверждать, что функция, использующая этот конкретный макрос, является членом определенного класса? Доступны функции C++03 или Boost.
#define MACRO_OF_THE_DOOM(...) assertion_here(); do_something();
class A {
void functionA();
void functionB();
};
// This is valid usage
void A::functionA() {
MACRO_OF_THE_DOOM(1, 2, 3, 4, 5);
}
// This should give an understandable compile error, which tells
// definition should be A::functionB()
void functionB() {
MACRO_OF_THE_DOOM(6, 7, 8);
}
A::
при их реализации? Вы пробовали-Wall
? - person Bartek Banachewicz   schedule 28.04.2016-Wall
, потому что ошибки компиляции отображаются перед предупреждениями компилятора. Меня также интересует, теоретически возможно ли это сделать со статическим утверждением. - person vll   schedule 28.04.2016#define MAKRO_OF_DOOM(p1,p2,p3) /** in case of error: check that function is member of Foo **/ ((Foo*)this)->someOtherFun();
? - person VolkerK   schedule 28.04.2016functionB
не является функцией-членом. Возможно, вам следует опубликовать это как ответ. - person vll   schedule 28.04.2016