将重载函数中的 std::ostream& 由左值引用改为右值引用即可解决该问题。
示例代码如下:
#include
using namespace std;
class Point{
public:
Point(int x_, int y_) : x(x_), y(y_){}
friend std::ostream& operator<<(std::ostream& out, const Point& p){
out<<"("<
以上代码中,如果不将 friend 函数中的 std::ostream& 改为右值引用,就会出现 ambiguous overload 的问题。