Как использовать объект из другого класса

0

У меня есть два класса; один называется Date а другой - University. Класс Date имеет два перегруженных оператора: operator<< и operator>> чтобы взять данные и распечатать их.

Date.h

#ifndef DATE_H_
#define DATE_H_

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

class Date {
public:
Date(); // constructor
void setDate( int d, int m, int y ); // set day, month, year
friend ostream & operator<<(ostream & out, Date & x); // print date format "month dd, yyyy (example: January 11, 2013)
friend istream & operator>>(istream & In, Date & x); // to read date
private:
int day; 
int month; 
int year; // 
};
#endif

Date.CPP
#include <iostream>
#include "Date.h"
#include "University.h"
using namespace std;



Date::Date()
{}


void Date::setDate( int d, int m, int y )
{
    day=d;
    month=m;
    year=y;
}




ostream & operator<<(ostream & out, Date & x)
{
    out<< x.month << "/" << x.day << "/" << x.year ;
    return out;
}

istream & operator>>(istream & in, Date & x)
{
    in>> x.day >> x.month >> x.year ;
    return in;
}

University класс имеет объект типа Date с именем establishDate, и я должен использовать это, чтобы напечатать дату вместе с названием университета и местоположением.

Здесь класс University:

// University.h

class University {
public:
    University (); // constructor
    friend ostream & operator<<(ostream & out, University & x); // print the university data
    friend istream & operator>>(istream & in, University & x); // to read university data
private:
    const static string uname; 
    string location;
    Date establishDate; 
};

const string uname = "London University";

Как использовать объект establishDate?

  • 1
    Вы пробовали cout << establishedData например?
  • 1
    Пожалуйста, сделайте отступ в своем коде правильно.
Показать ещё 4 комментария
Теги:
oop

1 ответ

0

Я думаю, вы хотите что-то вроде ниже:

ostream & operator<<(ostream & out, University & x)
{
   out<< x.uname << " in " << x.location << " has been established in: " << x.establishDate.month << "/" << x.establishDate.day << "/" << x.establishDate.year ;
   return out;
}

Это работает, потому что оператор является другом и, следовательно, имеет доступ к частным членам.

  • 0
    Там написано, что (месяц, день, год) недоступны, ребята, я знаю, что это глупые вопросы, но я самообучаюсь и могу упустить некоторые вещи, в любом случае эти переменные являются частными в классе Date, а этот оператор находится в классе University.
  • 0
    Ах, ах, мой плохой. Вместо этого используйте << установленные дата или добавьте общедоступные функции get для вашего класса дат

Ещё вопросы

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