【问题标题】:c++ classes and defining functions in them?c++ 类并在其中定义函数?
【发布时间】:2015-07-05 04:41:18
【问题描述】:

因此,对于我开始的 C++ 编程课程,我们正在编写一个程序,该程序为分数创建一个类,然后对创建的对象执行算术运算。该作业给出了Fraction 类的定义,这里是我最难以理解的公共成员。创建的对象是f1f2fresult

public:
void inputFrac();
void printFrac();
Fraction fracMult(Fraction b);
Fraction fracDiv(Fraction b);
Fraction fracAdd(Fraction b);
Fraction fracSub(Fraction b);

我通过创建一个类来理解你正在创建一个类型,但是当我在 main 中调用 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' 命名构造函数,而不是类型 分数::分数fracMult(分数b)

我真的很困惑,类中函数的类型如何成为类的名称,以及我应该如何在 main 之外格式化函数。

【问题讨论】:

  • :: 用于指定某物在哪里。函数fracMultFraction 内部。现在,您有一个全局 fracMult 函数在 Fraction 内部返回一个 Fraction,这没有多大意义。

标签: c++ c++11 methods


【解决方案1】:

要实现成员函数,您必须将其引用为ClassName::functionName。这里第一个Fraction 不是对类名的引用,而是函数的返回值,恰好是同一类型。

总之应该写成这样:

Fraction Fraction::fracMult(Fraction b) {
    // implementation here
}

【讨论】:

  • 天哪,我不敢相信我错过了。太多 Fraction 漂浮在周围(不幸的是)。现在可以了,谢谢!
猜你喜欢
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多