PavelK
@PavelK

Можно ли применить define что бы изменить реализацию функции, или как лучше это сделать?

Приветствую!
Есть реализация вот такой функции, которая генерируется MOC генератором у Qt:
int ClassA::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QObject::qt_metacall(_c, _id, _a);
    ....
}

Мне же нужно изменить её реализацию, но т.к. у Qt не продуман этот момент, то приходиться придумывать костыли.
Нужно что бы эта функция выглядела вот так:
int ClassA::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = InterfaceA::qt_metacall(_c, _id, _a);
    ....
}

Можно ли каким-либо макаром изменить реализацию?
P.S. заменить нужно только в пределах этой функции, а не повсюду.
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
PavelK
@PavelK Автор вопроса
Блин, за базар не ответил - в Qt Мета система продумана очень здорово!
Прошло правда 3 дня прежде чем разобрался, зато теперь ничего переопределять не нужно, как и возиться с define.
Стоило поглубже копнуть qmetatype.h вместе с отладчиком и понять каждый шаг, всё встало на свои места.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rulexec
@Rulexec
Метатеоретик теории типов
Не программирую на C++, не использую Qt, но похоже ваш moc — это отдельный тул, который участвует в процессе сборки. Нет никаких проблем после него запустить программу на любом ЯП, которая выполнит чуть более умный препроцессинг, найдя в файле позицию ClassA::qt_metacall и затем заменит первое вхождение QObject::qt_metacall на InterfaceA::qt_metacall.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы