我需要你的帮助。我是 C++ 的新手(仍在学习),我在使用包含来自不同类的对象的类构造函数时苦苦挣扎。任务是创建将由对象(Point 类)描述的 Rectangle 类,每个角都是一个具有 x,y 坐标的对象。此外,在构造函数创建 Rectangle 对象期间,我需要通过“>>”用户输入每个点的坐标的方式重载运算符 << 和 >>。 当我使用如下代码时,在 p1 到 p4 的字段上出现错误“不完整类型是不允许的”。
列表项
#include <iostream>
using namespace std;
class Point;
class Rectangle
{
public:
Rectangle(int p1x = 0, int p1y = 0, int p2x = 0, int p2y = 0, int p3x = 0, int p3y = 0, int p4x = 0, int p4y = 0) : p1(p1x, p1y), p2(p2x, p2y), p3(p3x, p3y), p4(p4x, p4y)
{
};
friend ostream & operator << (ostream &os, const Rectangle &rect);
private:
Point p1, p2, p3, p4;
void change_cordinates(Rectangle &);
int height, width;
};"
另一方面,当我使用#include "Point.h"指令时,我遇到了重载 << 和 >> 的问题,并出现错误“函数矩形不是类型名称”
我不知道是否清楚,但我希望我能清楚地描述我的问题(如果不正确,请纠正我或询问)
最佳答案
正如评论中已经提到的那样:您必须确保类型在使用时是“完整的”。
在您的示例中,通过将它们添加为成员变量来使用它们。 您可以通过持有指向它们的指针(而不是成员)来解决这个问题 - 但这很可能是一个坏主意,因为您随后必须关心内存分配/取消分配。
可能是最好的解决方案:包含“Point.h”并修复您的 >> 和 << 运算符。
关于c++ - 如何在类构造函数和重载运算符中创建不同的类对象(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43126135/