0

我可以使用一些帮助!

这是我在任何类型的编码中的第一门课程,并且我已经碰到了我的第一堵主要墙,这是关于 C++ 类的。我的问题出现在 main.cpp 的第 19 行:

错误 C2679:二进制“=”:未找到采用“void”类型右侧操作数的运算符(或没有可接受的转换)

我的问题就这么简单,我需要找出是什么让我的 multipliedBy 函数不能成为适用的操作数,这样我才能继续我的编程!

附带说明,如果它不正确,请不要担心我的“结果”功能,因为我仍在修补它。

感谢您的时间。

分数.cpp

#include <iostream>
#include "fraction.h"
using namespace std;

fraction::fraction()
{
    top = 0; //default constructor 
    bottom = 1;
}

fraction::fraction(int numerator, int denominator)
{
    top = numerator;
    bottom = denominator;
}

void fraction::answer()
{
    top = numAnswer;
    bottom = denAnswer;
}

void fraction::print() const
{
    cout << top << "/" << bottom; 
}

void fraction::multipliedBy(fraction f2)
{
    numAnswer = top * f2.top;
    denAnswer = bottom * f2.bottom;
}

void fraction::result(fraction answer)
{
    cout << " is ";
}

分数.h

#include <iostream>

#ifndef FRACTION_H
#define FRACTION_H
using namespace std;

class fraction {
    public:
        fraction();
        fraction(int numerator, int denominator);
        void answer();
        void print() const;
        void multipliedBy(fraction f2);
        void result(fraction answer);
    private:
        int numerator;
        int denominator;
        int top;
        int bottom; 
        int numAnswer;
        int denAnswer;
};

#endif

主文件

#include <iostream>
#include "fraction.h"
using namespace std;

int main()
{
    fraction f1(9,8);
    fraction f2(2,3);
    fraction result;

    cout << "The result starts off at ";
    result.print();
    cout << endl;

    cout << "The product of ";
    f1.print();
    cout << " and ";
    f2.print();
    result = f1.multipliedBy(f2);
    result.print();
    cout << endl;
}
4

1 回答 1

0

multipliedBy()需要是这样的:

fraction fraction::multipliedBy(fraction f2)
{
    fraction theAnswer(top, bottom);
    theAnswer.top *= f2.top;
    theAnswer.bottom *= f2.bottom;
    return theAnswer;
}

您还需要更改标题。请注意,此解决方案不会修改您正在处理的分数或f2. 它只是返回一个新fraction的答案。

您需要(至少)一条评论来解释为什么您拥有所有这些成员。似乎你只需要一个顶部和一个底部(无论你怎么称呼它们)。

  • 分子
  • 分母
  • 最佳
  • 底部
  • numAnswer
  • 登回答
于 2014-04-29T02:12:21.113 回答