Вы не можете использовать my_func таким образом, потому что это функция-член, и каждая функция-член связана с классом и нуждается в указателе на этот класс для использования. В стандартном C ++ вам придется использовать функции связывания (например, bind1st) для создания функтора, который содержит указатель на ваш объект, который вы можете передать функции-члену.
Конечно, вы также можете напрямую создать функтор или использовать свободную функцию (или статическую функцию в классе). Если вы используете boost, вы также можете использовать функции boost :: bind, которые проще (это не единственное их преимущество) писать, чем стандартные. (и я не упоминаю boost или C ++ 11 lambdas).
Если вы не знаете, что такое функтор, это класс, который переопределяет свою функцию operator (). Все алгоритмы STL созданы для их использования.
В вашем случае самый простой способ - просто создать бесплатную функцию. Конечно, вы должны также использовать умные указатели, такие как boost :: shared_ptr, вы получите значительные преимущества в управлении памятью.