#include <iostream>
class AClass
{
public:
void method1()
{
std::cout << "Method 1" << std::endl;
};
void method2()
{
std::cout << "Method 2" << std::endl;
};
};
int main()
{
AClass inst1;
AClass* inst2;
void (AClass::*Method)(void);
inst2 = new AClass;
Method = &AClass::method1;
(inst1.*Method)();
Method = &AClass::method2;
(inst2->*Method)();
delete inst2;
}
Output:
[vuhung@teriyaki SimpleCallBackExamples]$./example0
Method 1
Method 2
#include <iostream>
class AClass
{
public:
void method1(unsigned int value)
{
std::cout << "Method 1 - Value: " << value << std::endl;
};
bool method2(unsigned int value)
{
std::cout << "Method 2 - Value: " << value << std::endl;
return true;
};
};
int main()
{
AClass instance;
void (AClass::*MethodType1)(unsigned int);
bool (AClass::*MethodType2)(unsigned int);
MethodType1 = &AClass::method1;
MethodType2 = &AClass::method2;
(instance.*MethodType1)(123);
if ((instance.*MethodType2)(456))
std::cout << "Method returned a TRUE result." << std::endl;
else
std::cout << "Method returned a FALSE result." << std::endl;
return true;
}
Output:
[vuhung@teriyaki SimpleCallBackExamples]$./example1
Method 1 - Value: 123
Method 2 - Value: 456
Method returned a TRUE result
#include <iostream>
template <typename AType>
class AClass
{
public:
AClass(AType _data)
{
data = _data;
};
AType operator()()
{
std::cout << data << std::endl;
return data;
};
private:
AType data;
};
int main()
{
int (AClass< int >::*int_method)();
double (AClass< double >::*double_method)();
AClass < int > instance1(123);
AClass < double > instance2(456.789);
int_method = &AClass< int >::operator();
double_method = &AClass< double >::operator();
(instance1.*int_method)();
(instance2.*double_method)();
return true;
}
Output:
[vuhung@teriyaki SimpleCallBackExamples]$./example2
123
456.789

/