因此,对于我的 C++ 编程入门类(class),我们正在编写一个程序,该程序为分数创建一个类,然后对创建的对象执行算术运算。作业给出了类 Fraction
的定义,这里是我最难理解的公共(public)成员。创建的对象是 f1
、f2
和 fresult
。
public:
void inputFrac();
void printFrac();
Fraction fracMult(Fraction b);
Fraction fracDiv(Fraction b);
Fraction fracAdd(Fraction b);
Fraction fracSub(Fraction b);
我通过创建一个类来创建一个类型,但是当我在主函数中调用 fracMult
函数时,就像在为程序提供给我们的模板中一样—— ->
fresult = f1.fracMult(f2);
我在 main 之外的函数看起来像这样
Fraction :: Fraction fracMult(Fraction b)
{
Fraction x;
x.numerator = fraction.numerator * b.numerator;
x.denom = fraction.denom * b.denom;
if (fraction.positive == true && b.positive == false ||
fraction.positive == false && b.positive == true)
{
x.positive = false;
}
else (fraction.positive == true && b.positive == true ||
fraction.positive == false && b.positive == false)
{
x.positive = true;
}
return (x);
}
我得到一个错误
main.cpp:79:1: error: 'Fraction::Fraction' names the constructor, not the type Fraction :: Fraction fracMult(Fraction b)
我真的很困惑类中函数的类型如何成为类的名称,以及我应该如何在 main 之外格式化函数。
最佳答案
要实现成员函数,您必须将其引用为 ClassName::functionName
。这里的第一个 Fraction
不是对类名称的引用,而是函数的返回值,恰好是同一类型。
简而言之,应该这样写:
Fraction Fraction::fracMult(Fraction b) {
// implementation here
}
关于c++ 类并在其中定义函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29883700/