Вызов методов через расширение макроса - PullRequest
0 голосов
/ 30 января 2019

У меня есть этот код:

class A {
public:
  bool has_foo() { return true; }
};

int main() {
  A a;

  CALL(a, foo);
}

Я бы хотел вызвать метод has_foo через расширение макроса:

#define CALL(object, method) do { object.has_ ## method ## (); } while(0)

Код выше компилируется в MSVC, но не работаетс GCC.

Я хотел бы использовать расширение макроса, чтобы избежать накладных расходов во время выполнения.

1 Ответ

0 голосов
/ 30 января 2019

попробуй с

#define CALL(object, method) do { object.has_##method(); } while(0)
...