为什么这样做很好:
cout << "foo";
虽然这不?
(&cout)->operator<<("foo");
它可以正常使用数值,所以我猜它是与覆盖相关的东西. (我正在使用MS Visual C编译器.)
解决方法:
操作符LT;<仅作为有限数量类型的成员函数实现.对于其他类型,它实现为全局重载,如:
std::ostream &operator<<(std::ostream &os, T const &t) {
// write the data here
}
您使用的语法仅适用于作为成员函数实现的重载,而不是全局变量.