У меня есть два класса. Первый класс делает что-то, а затем просто вызывает метод второго класса. Каждый метод первого класса делает это. Можно ли автоматизировать реализацию кода с помощью макроса?C++ предоставление имени функции макрокоманде и вызов его
Пример:
class A
{
void Do1()
{
Do task x
ClassB b;
b.Do1();
Do task y
}
void Do2()
{
Do task x
ClassB b;
b.Do2();
Do task y
}
}
Можно ли реализовать этот путь? Это не работает, но что-то похожее.
#define VOID_FUNC(name) \
Do task x;\
ClassB b;\
b.##name##();\
Do task y;
class A
{
void Do1()
{
VOID_FUNC(__FUNCTION__);
}
void Do2()
{
VOID_FUNC(__FUNCTION__);
}
}
Возможно, но симпатичный способ был бы использовать шаблоны, 'станд :: bind', и 'std :: function'. Я обязательно отвечу на этот вопрос. – Bathsheba
Кажется, что нет простого способа создать то, что вы просите, и не очень-то простые способы получить уродливые реальные быстро; это может помочь, если вы объясните, почему вы хотите это сделать, поскольку может быть лучший способ выполнить вашу задачу? Похоже, вы хотите написать обертку вокруг существующего класса, который управляет каким-то ресурсом, который использует класс, где задача x будет приобретать ресурс, а задача y выведет его. Одна из идей, которая пришла мне в голову, заключается в том, что стандартная библиотека C++ обычно позволяет настраивать пользовательские распределители, которые могут быть адаптированы даже для таких вещей, как ведение журнала. –