#include <iostream>
#include <string>
using namespace std;

class myClass
{
public:
    myClass(int value);

    void methodA(const string &msg) { cout << msg << " from methodA" << endl; }
    void methodB(const string &msg) { cout << msg << " from methodB" << endl; }
    void method(const string &msg) { (this->*send_msg)(msg); }
    
//private:
    void (myClass::*send_msg)(const string &msg);
};

myClass::myClass(int value) : send_msg(value > 0 ? &myClass::methodA : &myClass::methodB)
{

}

int main()
{
    myClass a(1);
    a.method("Hi");

    myClass b(0);
    b.method("Hi");
    
    //or
    
    myClass c(1);
    (c.*c.send_msg)("Hi");

    myClass * p = new myClass(0);
    (p->*p->send_msg)("Hi");
    delete p;
         
	return 0;
}