gpt4 book ai didi

C++ 运算符覆盖来自 2 个类的参数

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:04 24 4
gpt4 key购买 nike

我是面向对象编程的新手,我想知道是否可以为一个类创建一个运算符,该运算符将使用我声明的这个类和另一个类的参数。

我要解决的问题是给定点上的线性平移。所以我创建了类 PointLinearTranslation 基本上我想做的是创建一个运算符

Point operator* (Point p, LinearTranslation l) 

这将采用 Point p,进行翻译 l 然后返回 Point。不过,我遇到了奇怪的错误:Point operator*(int)' must have an argument of class or enumerated type 或者 LinearTranslation has not been declared

有可能吗?

好的,我只发布了一点,因为这是一种作业,所以我有 Point.h 类

很抱歉弄得一团糟,但我正在尝试一切,但它对我不起作用。

#include "LinearTranslation.h"
class Point {
public:
int N;
double* coordinates;

public:
Point(int, double*);
virtual ~Point();
double operator[](int a);
//friend Point operator*(LinearTranslation l);
friend Point translation(LinearTranslation l);
};

LinearTranslation.h

#include "Point.h"

class LinearTranslation {
private:
int N;
double* vector;
double** matrix;
public:
//friend class Point;
LTrans(int,double*,double**);
LTrans(int);
virtual ~LTrans();
void write_vector();
void write_matrix();
LinearTranslation operator+(const LinearTranslation&);
friend Point& translation(LTrans l, Point p);
//friend Point& operator* (Point p, LTrans l);
};

最佳答案

在你的类声明中:

//friend Point operator*(LinearTranslation l);

friend 运算符重载函数有两个 函数参数,您只需在代码中声明一个。友元函数的最常见示例是使用重载运算符 <<,如下所示:

friend ostream& operator<<(ostream& output, const Point& p);

请注意,此函数将输出作为其第一个参数,并将点作为其第二个参数。

您的解决方法是将您的操作数添加到函数中

friend Point operator*(LinearTranslation l, const int& MULT);

关于C++ 运算符覆盖来自 2 个类的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13222347/

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