Я пишу приложение в Qt.Я пытаюсь создать систему сигналов и слотов для подключения одного потока контроллера к нескольким потокам, которые представляют реальные устройства.Количество устройств известно во время компиляции, но я хотел бы, чтобы было как можно проще изменить их количество.Мой первоначальный подход использовал шаблоны для сигналов, что-то вроде этого:
signals:
template<int whichOne> void updateDoohickeyState(dooHickeyState newState);
Я надеялся, что затем смогу подключить их к устройствам следующим образом:
connect(doohickeyController, doohickeyController::updateDoohickeyState<0>,
doohickeys[0], doohickeyObject::updateState,
Qt::QueuedConnection);
connect(doohickeyController, doohickeyController::updateDoohickeyState<1>,
doohickeys[1], doohickeyObject::updateState,
Qt::QueuedConnection);
// Etc...
Затем, когда яхотел сигнализировать устройство, я мог сделать что-то вроде:
emit updateDoohickeyState<0>(doohickeyState);
emit updateDoohickeyState<1>(anotherDoohickeyState);
К сожалению, MOC Qt не поддерживает шаблоны для сигналов и слотов;следовательно, это не работает.
Итак, как еще я могу это реализовать?У меня есть один контроллер, который должен сигнализировать одному из нескольких идентичных устройств в других потокахВ идеале я хотел бы сделать это, не добавляя больше сигналов (более сложное для обновления позже), фильтруя слоты (неэффективно) или добавляя другой класс в середине.