Всем привет! Вроде и простое, но не могу понять, как передавать параметры. Хочу передать по значению, хотя не важно как. Есть код. В классе Rational
, с помощью конструктора с параметрами хочу сделать числитель и знаменатель, после чего результат их деления записываю в answer. В классе Number, родительском классе, существует метод number_status
(). Хочу передать в значение number
своё значение answer
, чтобы при указании в 76 строке Number_instance.number_status()
; мне выводило значение переменной number уже с новым параметром. Впрочем и не только в 76, чтобы после каждого моего класса, Integer, Rational, Natural,
выводило ответ записанный в переменную number
, которая объявлена в родительском классе Number. Подскажите, как мне это реализовать? Не выпрашиваю код, только советы по реализации.
Код:
#include "pch.h"
#include <iostream>
using namespace std;
class Number {
public:
double number = 8.2;
void number_status() {
cout << "Текущее значение number: " << number;
}
~Number() {};
};
class Integer : public Number {
public:
void integer_status() {
cout << "Проверка числа на 'Целое ли число?': " << endl;
if ((number - int(number)) != 0) {
cout << "Число не является целым!";
}
else {
cout << "Это целое число!";
}
cout << endl;
}
~Integer() {};
};
class Rational : public Number {
private:
double chislitel;
double znamenatel;
double answer;
public:
void rational_status(double c, double z) {
chislitel = c; znamenatel = z;
answer = c / z;
cout << "Числитель = " << chislitel << endl;
cout << "Знаменатель = " << znamenatel << endl;
cout << "Результат деления: " << answer << endl;
answer = number;
void number_status();
}
~Rational() {};
};
class Natural : public Number {
public:
void natural_status() {
cout << "\nПроверка числа на 'Натуральное ли число?': " << endl << endl;
}
~Natural() {};
};
int main() {
setlocale(LC_ALL, "rus");
Number Number_instance;
Integer Integer_instance;
Rational Rational_instance;
Natural Natural_instance;
Number_instance.number_status();
cout << "\t " << endl;
Integer_instance.integer_status();
cout << "\t " << endl;
Rational_instance.rational_status(6, 2);
Number_instance.number_status();
cout << "\t " << endl;
Natural_instance.natural_status();
system("pause");
return 0;
}
//TODO
//Сделать в Rational через конструктор числитель и знаменатель и выводить результат деления
//Выводить в натуральном через конструктор число
//Сделать для Integer, Natural и Rational общий метод для вывода
Мне кажется, что вы неверно используете полиморфизм.
Классы Integer
, Rational
и Natural
публично наследуют класс Number
. Это означает, что все публичные и защищённые (protected) члены базового класса Number
доступны наследникам.
То есть класс Integer
имеет публичный член double number
, так как он унаследовал его от Number
, равно как и метод number_status()
тоже может быть вызван внутри наследника.
Хочу передать в значение number своё значение answer
Не нужно его передавать. У каждого наследника есть свой number
, который можно использовать непосредственно в наследнике.
Например:
#include <iostream>
class Operation
{
public:
Operation() : result(0) {};
unsigned result;
void echo_result()
{
std::cout << "Текущее значение result: " << result << '\n';
}
};
class Adder : public Operation
{
public:
Adder(const unsigned a, const unsigned b) : a(a), b(b) {};
unsigned a;
unsigned b;
void compute()
{
result = a + b;
}
};
class Multiplier : public Operation
{
public:
Multiplier(const unsigned a, const unsigned b) : a(a), b(b) {};
unsigned a;
unsigned b;
void compute()
{
result = a * b;
}
};
int main()
{
Adder adder(7, 3);
adder.compute();
adder.echo_result();
Multiplier mul(7, 3);
mul.compute();
mul.echo_result();
// Текущее значение result: 10
// Текущее значение result: 21
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Можно ли задать точку вращения для фигуры в openGl? Используя glRotatef() вращается вся плоскость относительно центраДля примера: мне нужно вращать...
Есть свой класс (public class MyNum)Как объявить, а потом инициализировать двумерный динамический массив, с объектами моего класса?
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме