gpt4 book ai didi

c++ - 运算符重载取模函数

转载 作者:行者123 更新时间:2023-11-28 04:25:02 25 4
gpt4 key购买 nike

我应该重载模数函数,但我不确定该怎么做。如果您需要更多信息,请告诉我。

这是我学校的要求:

将 Point 绕原点旋转指定度数的成员函数。返回一个新点

在驱动文件里面,我的学校想要取模函数来完成这个场景:

点 pt1(-50, -50);
双角 = 45;
点 pt2 = pt1 % 角度;

这是我试过的:

Point Point::operator%( int value)
{
(int)x%value;

(int)y%value;

return *this;
}

//point.h file

class Point
{
public:
// Constructors (2)
explicit Point(double x, double y);

Point();

double getX() const;

double getY() const;

Point operator+(const Point& other)const ;

Point& operator+(double value);

Point operator*(double value) ;

Point operator%(int value);

Point operator-(const Point& other)const ;

Point operator-(double value);

Point operator^(const Point& other);

Point operator+=(double value);
Point& operator+=(const Point& other) ;

Point& operator++();
Point operator++(int);

Point& operator--();
Point operator--(int);

Point& operator-();

// Overloaded operators (14 member functions)
friend std::ostream &operator<<( std::ostream &output, const Point
&point );
friend std::istream &operator>>( std::istream &input, Point
&point );

// Overloaded operators (2 friend functions)

private:
double x; // The x-coordinate of a Point
double y; // The y-coordinate of a Point

// Helper functions
double DegreesToRadians(double degrees) const;
double RadiansToDegrees(double radians) const;
};

// Point& Add(const Point& other); // Overloaded operators (2 non-member, non-friend functions)
// Point& Multiply(const Point& other);
Point operator+( double value, const Point& other );
Point operator-( double value, const Point& other );

最佳答案

我看到的第一个错误是您没有遵守作业要求。您的作业特别要求您的类型支持此操作:

Point pt1{-50, 50};
Point pt2 = pt1 % 45.5;

这表明您的运算符必须返回一个点,并使用 double 值对其应用操作。您显然将角度存储为双倍,但收到一个 int。那是不尊重你的要求。此外,您返回一个旋转点,但不是正确的点。您正在就地进行操作,而不是在新点上进行操作。在您的运算符(operator)内部,您应该使用新位置创建一个点。像这样:

Point Point::operator%(double) const {
return Point{..., ...};
}

那么,你的操作是错误的。您将点数据成员转换为 int 只是为了对它们进行取模。模数不做旋转。旋转通常用正弦和余弦来完成。您不能对 int 使用 C++ % 运算符进行旋转。

关于c++ - 运算符重载取模函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54526633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com