我发现当我在类或结构中创建ostream运算符时,它只接受一个参数,而第二个参数是这个指针,所以我尝试这样做,但是它没有工作。
我知道我应该在类或结构之外创建它,作为一个自由函数,但是我正在试图理解为什么?
struct Vector2
{
float x,y ;
Vector2(float ax , float ay )
{
x = ax ;
y = ay ;
}
std:: ostream& operator<< (std::ostream& stream )
{
return stream <<this->x<< " , "<< this->y ;
}
}发布于 2021-05-20 13:39:54
当<<重载时,a << b意味着
operator<<(a,b)如果重载是一个空闲函数,或者
a.operator<<(b)如果是会员的话。
也就是说,对于定义为成员的运算符,左边的参数是*this,您需要编写
Vector2 v;
v << std::cout;wihch相当于
Vector2 v;
v.operator<<(std::cout);https://stackoverflow.com/questions/67621224
复制相似问题