例如,如果我想通过
ostream& std::ostream::operator << (int i);
进入一个函数,例如
void func(ostream& (*out)(int), ...);
那我该怎么做呢?
正在做
func(std::ostream::operator << (int))
肯定行不通
typedef ostream& (*out)(int);
out o = std::ostream::operator << (int);
func(o);
尝试分配 o 时引发编译时错误。那么如何指向重载运算符呢?(在这种情况下,强制类型输出也不起作用)
在玩弄了代码之后,我现在的问题是:为什么它是非成员、重载的运算符,即
ostream& operator << (ostream&, classX)
返回 void* 而不是指向函数的指针?
如果我做
typedef ostream& (*out)(ostream&,classX);
我只能做到
void* v = ostream& operator << (ostream&,classX);
并不是
out o = ostream& operator << (ostream&,classX);
打印错误消息
190: error: invalid conversion from 'void*' to 'std::ostream& (*)(std::ostream&, classX)'