0 / 0 / 0
Регистрация: 17.07.2008
Сообщений: 6
|
||||||
1 | ||||||
Передача метода класса в качестве параметра для метода другого класса06.02.2013, 21:31. Показов 2546. Ответов 2
Метки нет (Все метки)
Здравствуйте,
Передо мной стоит такая задача. Необходимо разработать механизм, который бы мог прервать любую функцию, при этом абсолютна не зная, что за функцию ему передали. Мне ничего лучше в голову не пришло, как создать класс унаследованный от QThread (использую QT, но думаю это не принципиально в данном вопросе), который мог бы получать функцию какого то класса в качестве атрибута и выполнять её в теле run(), выполнение которого он бы уже мог прервать с помощью метода terminate(). Вот какой класс у меня получился:
"error C2664: Stopper::connectRequest: невозможно преобразовать параметр 1 из 'void' в 'void (__cdecl *)(void)' Выражение, имеющее тип void, нельзя преобразовать в другой тип" Насколько я понял изучая эту тему, мне нужно корректно реализовать делегат, но у меня никак не получается это сделать... Прошу помощи. Заранее спасибо
0
|
06.02.2013, 21:31 | |
Ответы с готовыми решениями:
2
Передача члена класса в качестве параметра метода [C++, OpenGL, glut] передача метода класса в качестве параметра функции glutDisplayFunc() двумерный массив в качестве параметра метода класса Указатель на объект в качестве параметра вызываемого метода класса |
165 / 164 / 23
Регистрация: 23.02.2011
Сообщений: 347
|
|
06.02.2013, 21:50 | 2 |
Ты не путай, функцию и метод. Можешь сделать класс, в который тебе нужно это передать шаблонным и передавать в него указатель на экземпляр класса, чей метод нужно вызвать. А вообще, подобные проблемы говорят, об изначально неудачно спроектированной программе. Попробуй найти более простое решение.
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
06.02.2013, 21:57 | 3 |
если сигнатура известна, то можно пользоваться
std::function boost::function либо же как в классике замутить все с помощью паттерна Command (Команда) - тут чуть больше приседаний придется сделать, но если буста нет и нового стандарта нет - то это наверно лучшая альтернатива.
0
|
06.02.2013, 21:57 | |
06.02.2013, 21:57 | |
Помогаю со студенческими работами здесь
3
Передача enum в качестве аргумента метода класса Передача метода класса в качестве аргумента внешней функции Вызов метода класса из метода другого класса Указатель на метод класса в качестве аргумента метода класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |