Нестатические функции-члены нуждаются в вызове объекта.Используя обычный myMathElement->Print_1
, вы не предоставляете никакой объект, просто указатель на функцию-член.
Либо используйте std::bind
, чтобы предоставить объект в качестве первого аргумента функции:
t1.func = std::bind(&MyMath::Print_1, myMathElement);
Или используйте лямбда-выражения :
t1.func = [myMathElement]() { myMathElement->Print_1(); };
Что касается ваших ошибок, либо вы их получаете из-за какой-то проблемы в Queue
class (который вы нам не показали), но, скорее всего, ошибки связаны не с вызовами push
, а с назначениями func
участника.
Вы должны получить их отназначение, потому что они не являются действительными назначениями.Вы не можете использовать такие функции-члены, вы должны использовать оператор адреса &
и полную область видимости с классом (или структурой) вместо объекта.Как показано выше при вызове std::bind
, вы должны использовать &MyMath::Print_1
.