Как использовать Cout для отображения значения из класса в классе? - PullRequest
0 голосов
/ 21 октября 2019

Вот три разных класса

#pragma once
#include <string>
#include "registeredUser.h"

using namespace std;

class theater
{

public:

string address;

registeredUser registerUser(string e, string p)
{
    registeredUser y;
    y.email = e;
    y.password= p;

    return y;
}

};

#pragma once
#include <string>
#include "userData.h"
#include "movie.h"
using namespace std;

class registeredUser
{
public:
    string email;
    string password;


movie addMovie(string t, int y, string d, string g)
{
    movie m;
    m.title = t;
    m.year = y;
    m.desc = d;
    m.genre = g;

    return m;
}

 userData addUserData(string n, string a, string cc)
 {
     userData y;
     y.name = n;
     y.address = a;
     y.creditCard = cc;

     return y;
 }


 };

#pragma once
#include<string>
using namespace std;

   class userData
   {
   public:
    string name;
    string address;
    string creditCard;
   };

В коде ниже я создал экземпляр театра, а затем экземплярзарегистрированный пользователь, в случае театра. Этот пользовательский экземпляр также содержит в себе другой класс: userData.

// create a new theatre object
theater uweTheater;
uweTheater.address = "UWE Frenchay";

// register a user with the theatre and add some user details
registeredUser user1 = uweTheater.registerUser("user1@here.com", "password");
user1.addUserData("Name", "Address", "Number");

Как я могу использовать std :: cout для отображения внутренних деталей большинства классов? Например, если бы я хотел отобразить имя пользователя user1, как бы я объявил это в операторе cout -> std :: cout << ?? << endl; </p>

1 Ответ

0 голосов
/ 21 октября 2019

Ваш класс theater имеет метод с именем registerUser(), который создает экземпляр registeredUser и возвращает его. registeredUser также имеет метод с именем addUserData(), который создает экземпляр userData и возвращает его. Названия этих методов вводят в заблуждение, поскольку ни один из них не добавляет и не регистрирует пользователя во внешнем классе. Вместо этого они оба просто создают экземпляр и возвращают его.

Я не вижу причин отделять registeredUser от userData. Вам просто нужно создать класс User со всеми полями, необходимыми для пользователя. Вам также следует добавить поле в класс theater, чтобы отслеживать всех его пользователей. Например, вы можете сделать:

class theater {
    private:
        std:vector<User> users;
}

И тогда ваш метод registerUser() может добавить пользователей в этот список пользователей.

Затем, чтобы ответить на ваш вопрос о печати информации, вы можете переопределитьoperator>>() для обоих классов, чтобы сделать это.

...