gpt4 book ai didi

c++ - 在另一个类的函数中返回一个类,反之,编译错误(递归)

转载 作者:行者123 更新时间:2023-11-30 03:45:36 26 4
gpt4 key购买 nike

有人可以减轻我的挣扎吗?我正在尝试组织两个类(Points)以在他们的方法中返回相反的类。笛卡尔点类具有返回极点的方法,反之亦然。

Point2D.h

#pragma once
#include "PointPolar2D.h"
class Point2D
{
private:
double x;
double y;

public:
Point2D(double x, double y);

PointPolar2D toPolar();

~Point2D();
};

Point2D.cpp

#include "stdafx.h"
#include "Point2D.h"
#include "PointPolar2D.h"


Point2D::Point2D(double x, double y) : x(x), y(y)
{
}

PointPolar2D Point2D::toPolar()
{
return PointPolar2D(1, 4);
}

Point2D::~Point2D()
{
}

PointPolar2D.h

#pragma once
#include "Point2D.h"

class PointPolar2D
{
private:
double radius;
double angle;

public:
PointPolar2D(double radius, double angle);

Point2D toCartesian();

~PointPolar2D();
};

PointPolar2D.cpp

#pragma once
#include "Point2D.h"

class PointPolar2D
{
private:
double radius;
double angle;

public:
PointPolar2D(double radius, double angle);

Point2D toCartesian();

~PointPolar2D();
};

它不编译。错误显示:toPolar:unknown override specifier 以及 unexpected token(s)preceding ;

请帮我找出原因。它必须是明显的或不明显的。如果需要,我会提供任何说明。谢谢。

已编辑按照@Amit 的建议创建了 MCVE。谢谢。

最佳答案

根据类的名称,我猜测 PointPolar2DPoint2D 的子类。

因此,PointPolar2D.h 需要#include Point2D.h。你还有:

#include "PointPolar2D.h"

在 Point2D.h 中。即循环包含。它会导致各种问题。

从 Point2D.h 中删除该行并添加前向声明。

class PointPolar2D;

您不需要完整的类定义来声明函数。

PointPolar2D toPolar();

前向声明就足够了。

确保在 Point2D.cpp 中 #include PointPolar2D.h。您需要 PointPolar2D 的定义来实现 Point2D::toPolar

关于c++ - 在另一个类的函数中返回一个类,反之,编译错误(递归),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34699287/

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