Como chamar o ponteiro para a função de membro, que foi salva em um vetor de estrutura personalizada? [fechadas]

Minha pergunta é realmente sobrepergunta já feita. Eu tentei oresposta dada por @ r3mus n0x Também vi algumas perguntas de SO que não me ajudaram a ter uma idéia clara da situação acima.

No post em questão, falta o MCVE, portanto, tentei um pouco e criei o código a seguir e com o mesmo erro que o @ user10213044 mencionou em seu post.

Mensagem de erro

error C2065: 'm_func': undeclared identifier

Minha pergunta:

Q1: Podemos realmente armazenar o ponteiro para algumas das funções de membro de uma classe (como no exemplo a seguir) em um membro privado (por exemplo, vetor array)? Em caso afirmativo, qual é o motivo da mensagem de erro acima?

Q2: Eu também tentei escrever dentro do loop for:

classFuncPtr fun = bindClassPtr->m_func; // compiles
fun(str); // error

deu-me:Mensagem de erro

error: must use '.*' or '->*' to call pointer-to-member function in 'fun (...)', e.g. '(... ->* fun) (...)'
 fun(str); // error

que eu não conseguia entender. Alguém pode me dizer o que deu errado neste caso?

A segunda tentativa foi semelhante ao caso a seguir, que usamos para funções normais caso ponteiro.

typedef void(*FuncPtr)(const std::string&);
FuncPtr Lambda = [](const std::string& str) { std::cout << str << std::endl; };
Lambda(std::string("Hellow World"));

Aqui está o código que tentei:

#include <iostream>
#include <vector>
#include <string>
#include <memory>

cla,ss MyClass;          
typedef void (MyClass::*classFuncPtr)(const std::string&); // function ptr to MyClass::member functions

struct MyBind // bind struct
{
   classFuncPtr m_func;
   explicit MyBind(const classFuncPtr& func): m_func(std::move(func)) {}
};

class MyClass
{
    std::string m_var;
    std::vector<std::unique_ptr<MyBind>> my_binds_;
public:
   MyClass() // constructor 
   {
      my_binds_.emplace_back( std::make_unique<MyBind>( std::move(&MyClass::do_this) ));
      my_binds_.emplace_back( std::make_unique<MyBind>( std::move(&MyClass::do_that) ));
   }

   // two functions to bind
   void  do_this (const std::string& str) { std::cout << "From do this: " << str << std::endl;   }
   void  do_that (const std::string& str) { std::cout << "From do that: " << str << std::endl;   };

   void handle_input(const std::string& str)
   {

      for (const std::unique_ptr<MyBind>& bindClassPtr: my_binds_)
      {
          // how to print passed string str here??              (Q1)
          (bindClassPtr->*m_func)(str);

          /*
          classFuncPtr fun = bindClassPtr->m_func; // compiles   (Q2)
          fun(str); // error
          */
      }
   }
};

questionAnswers(1)

yourAnswerToTheQuestion