создать класс с помощью ввода из cin, полученного с помощью оператора >>

0

Мое назначение Я создаю следующие классы со следующими членами данных/функциями-членами.

  • компьютер
    • ОЗУ (в ГБ).
    • Скорость процессора (в ГГц).
    • # Конечно
    • Размер хранилища на жестком диске (в ГБ).
    • Печать (виртуальная функция)
  • Рабочий стол (наследуется от компьютера)
    • hasMonitor
    • monitorSize (в дюймах)
  • Ноутбук (наследуется от компьютера)
    • Размер экрана
  • Кластер (наследуется от компьютера)
  • Количество компьютеров

Я должен добавить функцию виртуальной печати и ввести данные для каждого рабочего стола/ноутбука, который у меня есть. Может ли кто-нибудь помочь мне разобраться, почему он не принимает никаких мер для этого?

#include <iostream>

using namespace std;


class computers{
      public:
      int ram;
      double processor_speed;
      int num_cores;
      int hd_storage;
      computers();
      };
computers::computers()
{
 ram=0;
 processor_speed=0;
 num_cores=0;
 hd_storage=0;


}


class desktop: public computers{
      public:
      bool hasMonitor;
      double monitor_size;
      desktop();
      friend istream& operator>>(istream& isObject, desktop& desk1);

      };

desktop::desktop()
{
 hasMonitor=true;
 monitor_size=0;                 

}
istream& operator>>(istream& isObject, desktop& desk1)
      {

          isObject>>desk1.hasMonitor;
          isObject>>desk1.monitor_size;
          isObject>>desk1.ram;
          isObject>>desk1.processor_speed;
          isObject>>desk1.hd_storage;
          isObject>>desk1.num_cores;
          if(desk1.hasMonitor==0)
              desk1.hasMonitor=false;

          return isObject;
      }


class laptop:public computers{
      public:
      int screen_size;
      laptop();
      friend istream& operator>>(istream& isObject,laptop& lap1);
      };
laptop::laptop()
{
screen_size=0;                

}
istream& operator>> (istream& isObject, laptop& lap1)
{
    isObject>> lap1.ram;
    isObject>> lap1.processor_speed;
    isObject>> lap1.hd_storage;
    isObject>> lap1.num_cores;
    isObject>> lap1.screen_size;
    return isObject;
}
class cluster:public computers{
      public:
      int num_of_comps;
      friend istream& operator>>(istream& isObject,cluster& clust1);
      cluster();


      };
cluster::cluster()
{
num_of_comps=0;

}

istream& operator>>(istream& isObject,cluster& clust1)
{
    isObject >> clust1.ram;
    isObject >> clust1.processor_speed;
    isObject >> clust1.hd_storage;
    isObject >> clust1.num_cores;
    isObject >> clust1.num_of_comps;
    return isObject;
}
cluster operator+(const computers& comp1, const computers& comp2)
{
    cluster mrcluster;
    mrcluster.ram = comp1.ram+comp2.ram;
    mrcluster.processor_speed = comp1.processor_speed+comp2.processor_speed;
    mrcluster.num_cores = comp1.num_cores+comp2.num_cores;
    mrcluster.hd_storage = comp1.hd_storage+comp2.hd_storage;
    return mrcluster;
}

int main()
{
    laptop laptop1;
    desktop desktop1;
    desktop desktop2;
    cluster mycluster = laptop1+desktop1+desktop2;
    system("pause");
}
Теги:
oop
input
cin

2 ответа

1

Вы не запрашиваете никаких входных данных в своей main функции. main - ваша точка входа для вашей программы, поэтому все, что вы хотите сделать, должно происходить там (например, вызов функции для запроса ввода).

  • 0
    но какую функцию я бы вызвал для перегруженного >>?
  • 0
    cin >> laptop1; будет вызывать operator>>(ostream&, laptop&) чтобы заполнить laptop1 данными, которые вы ищете.
0

вам нужно сделать cin >> laptop1

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню