C++ 写一个分数类,我无法找出这些错误

C++ 写一个分数类,我无法找出这些错误,c++,C++,我正在写一个fraction.cpp和fraction.h,它输入分数类型并对它们进行数学运算。我有一个奇怪的错误,上面写着“未定义的引用”,但据我所知,引用是定义的。还有一系列错误,比如“没有匹配的函数来调用分数::outputFormat(fracForm)”和“候选者是”等。以下是我的所有代码供参考: main.cpp 声明enum fracForm两次: enum fracForm {improper, mixed, decimal}; class fraction { enu

我正在写一个fraction.cpp和fraction.h,它输入分数类型并对它们进行数学运算。我有一个奇怪的错误,上面写着“未定义的引用”,但据我所知,引用是定义的。还有一系列错误,比如“没有匹配的函数来调用分数::outputFormat(fracForm)”和“候选者是”等。以下是我的所有代码供参考: main.cpp


声明
enum fracForm
两次:

enum fracForm {improper, mixed, decimal};

class fraction {
    enum fracForm {improper, mixed, decimal};
fraction
中的函数现在使用enum
fraction::fracForm
,外部的代码(因此在
main.cpp
)使用
fracForm

这两个
enum
不相同,因此代码无法编译

要解决此问题,您可以使用“
global
”方法,其中fracForm从
fraction
类解析:

enum fracForm {improper, mixed, decimal};

class fraction {
    //enum fracForm {improper, mixed, decimal};
有了这个解决方案,我想大多数错误都消失了

另一种解决方案是,将分形误差置于分数类范围内:

//enum fracForm {improper, mixed, decimal};

class fraction {
    public:
    enum fracForm {improper, mixed, decimal};
现在必须在类之外使用枚举,如:

fracForm type = fraction::improper;

声明
enum fracForm
两次:

enum fracForm {improper, mixed, decimal};

class fraction {
    enum fracForm {improper, mixed, decimal};
fraction
中的函数现在使用enum
fraction::fracForm
,外部的代码(因此在
main.cpp
)使用
fracForm

这两个
enum
不相同,因此代码无法编译

要解决此问题,您可以使用“
global
”方法,其中fracForm从
fraction
类解析:

enum fracForm {improper, mixed, decimal};

class fraction {
    //enum fracForm {improper, mixed, decimal};
有了这个解决方案,我想大多数错误都消失了

另一种解决方案是,将分形误差置于分数类范围内:

//enum fracForm {improper, mixed, decimal};

class fraction {
    public:
    enum fracForm {improper, mixed, decimal};
现在必须在类之外使用枚举,如:

fracForm type = fraction::improper;


请提供完整的错误信息请尝试写,我的意思是minimal和maximalI没有发布错误信息。我不知道如何使它更简单。你真的希望我们通读所有这些代码吗?检测问题,隔离它,写一个最小的例子,说明哪里出了问题。如果你想让我们提供答案,那是你的职责。永远不要使用命名空间std。从未!请提供完整的错误信息请尝试写,我的意思是minimal和maximalI没有发布错误信息。我不知道如何使它更简单。你真的希望我们通读所有这些代码吗?检测问题,隔离它,写一个最小的例子,说明哪里出了问题。如果你想让我们提供答案,那是你的职责。永远不要使用命名空间std。从未!而且
fraction::fracForm
也是私有的。它需要公开。这取决于她想用哪种类型,是的。我应该指定,那么我应该删除哪一个?我最初在类之外声明了它。如果你创建了一个
分数
名称空间,就把它留在类之外的名称空间中。如果你没有,把它放在课堂上,但要公开。这是我个人的观点,不是规则。@khaleesi0712如果
fractform
主要用于类
fraction
,我认为将其放在类中是有意义的,因为两者都是同时出现的。如果要在另一个类中使用
fractform
(不使用
fraction
),请使用全局解决方案,并且
fraction::fractform
也是私有的。它需要公开。这取决于她想用哪种类型,是的。我应该指定,那么我应该删除哪一个?我最初在类之外声明了它。如果你创建了一个
分数
名称空间,就把它留在类之外的名称空间中。如果你没有,把它放在课堂上,但要公开。这是我个人的观点,不是规则。@khaleesi0712如果
fractform
主要用于类
fraction
,我认为将其放在类中是有意义的,因为两者都是同时出现的。如果要在另一个类中使用
fractform
(不使用
fraction
),请使用全局解决方案