How to overload an operator<<
with a function as parameter, like std::endl
does for std::cout
?
In my project, I need to do this. For example, in the following code:
CSampleClass test;
test << CSampleClass::foo; // foo is function
I write code as following but it causes an error:
In the class header file:
CSampleClass& foo(CSampleClass& c);
CSampleClass& operator << (CSampleClass& (*pf)(CSampleClass&));
In the class source file:
CSampleClass& CSampleClass::foo(CSampleClass& c)
{
// do some thing
// for example set a variable in CSample class object
// c.samevar = 0;
return *this;
}
CSampleClass& CSampleClass::operator << (CSampleClass& (*pf)(CSampleClass&))
{
return *pf(*this);
}