【发布时间】:2020-11-19 12:09:22
【问题描述】:
我编写了一个Fraction 类来处理Fraction 对象和重载等工作,我需要将实现与方法的定义分开,但是在涉及到构造函数时出现重新定义错误类Fraction。
Fraction.h
中的代码 sn-pclass Fraction
{
private:
int calcGCD(int n1, int n2) const;
int compare(const Fraction& fraction) const;
int m_numerator;
int m_denominator;
public:
Fraction(int numerator = 0, int denominator = 1) : m_numerator(numerator), m_denominator(denominator);
Fraction(const Fraction& fraction) : m_numerator(fraction.numerator()), m_denominator(fraction.denominator());
Fraction(const Fraction& orig);
};
Fraction.cpp
中的代码 sn-p#include "Fraction.h"
Fraction::Fraction(int numerator, int denominator)
: m_numerator(numerator), m_denominator(denominator)
{}
Fraction::Fraction(const Fraction& fraction)
: m_numerator(fraction.numerator()), m_denominator(fraction.denominator())
{}
这会导致以下错误:
Fraction.h:26:5: error: 'Fraction::Fraction(const Fraction&)' cannot be overloaded with 'Fraction::Fraction(const Fraction&)'
Fraction.h:25:5: note: previous declaration 'Fraction::Fraction(const Fraction&)'
Fraction.h:24:105: error: expected '{' at end of input
其次是其他一些我认为只是一两个主要错误的级联效应。但如果真的需要,我可以发布它们。
我认为这与我在 .cpp 文件中声明构造函数的方式有关,因为我知道有些东西不会继承,例如访问修饰符和 static 等。
对不起,如果这是一个愚蠢的错误,我是 C++ 新手,我无法在任何地方找到答案。
【问题讨论】:
-
您已经在标题中实现了
Fraction::Fraction(const Fraction &fraction)。 -
您有 2 个分数构造函数,它们采用相同的参数
const Fraction & -
您认为
Fraction(const Fraction &fraction) : m_numerator(fraction.numerator()), m_denominator(fraction.denominator());和Fraction(const Fraction& orig);之间的区别到底是什么。
标签: c++ class c++11 constructor declaration