Почему ISO C++ решает запретить использование адреса связанной функции-члена для формирования указателя на функцию-член?C++

Программы на C++. Форум разработчиков
Anonymous
Почему ISO C++ решает запретить использование адреса связанной функции-члена для формирования указателя на функцию-член?

Сообщение Anonymous »

Это строка ошибок моего кода: < /p>

Код: Выделить всё

threads[i] = std::thread(&runnable->runTask, runnable, i, num_total_tasks);

Код: Выделить всё

runnable
является объектом, а Runtask -нестатическая функция. Компилятор бросает мне ошибку только на заголовок. функция Они рекомендуют использовать и irunnable :: runtask . Я использую его, чтобы пройти компилятор. Strong> какую функцию вы используете , почему мне нужно ввести аргумент obj's pointer и использовать Weird & iRunnable :: runtask для ссылки на нестатическую функцию члена.
Одной из возможных запрещенных причин для меня является полиморфизм времени выполнения, я думаю, что, возможно, C ++ не может напрямую получить, какую функцию вы ссылаетесь только по типу указателя объекта, во время выполнения он решит запустить функцию элемента по типу объекта. Указатель действительно укажите на. Таким образом, адрес будет изменяться динамически. Я хочу обсудить больше с точки зрения дизайна, спасибо!

Подробнее здесь: https://stackoverflow.com/questions/793 ... tion-to-fo

Вернуться в «C++»