класс — C ++ проблема с использованием функции-члена в качестве операнда. ошибка C2679

Я мог бы использовать некоторую помощь!

Это мой первый курс в любом виде кодирования, и я достиг своей первой большой стены, это с классами C ++. Моя проблема возникает в строке 19 main.cpp:

ошибка C2679: двоичный файл «=»: не найден оператор, который принимает правый операнд типа «void» (или нет приемлемого преобразования)

Моя проблема настолько проста, что мне нужно выяснить, что мешает моей функции multipliedBy быть применимым операндом, чтобы я мог продолжить свое программирование!

Кроме того, если это неверно, не беспокойтесь о моей «результативной» функции, так как я все еще пытаюсь поработать с этим.

Спасибо за ваше время.

fraction.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 ";
}

fraction.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

main.cpp

#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;
}

0

Решение

multipliedBy() должно быть что-то вроде этого:

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

Вам также нужно изменить заголовок.
Обратите внимание, что это решение не изменяет дробь, над которой вы работаете, или f2, Он просто возвращает новый fraction с ответом в нем.

Вам нужен (как минимум) комментарий, объясняющий, почему у вас есть все эти участники. Кажется, вам нужны только верх и низ (как вы их называете).

  • числитель
  • знаменатель
  • Топ
  • низ
  • numAnswer
  • denAnswer
0

Другие решения


По вопросам рекламы [email protected]