c++에서 객체 배열의 동적 할당에 관한 질문입니다.

조회수 953회

문제는

  • 사람들의 정보를 입력하고
  • 아이디와 패스워드를 입력했을 때 이름과 근속연수를 출력하는 프로그램입니다.
  • 만약 아이디와 패스워드가 틀리면 이름과 근속연수에 접근하지 못하는 조건을 가지고 있습니다.

사람들의 정보는 이렇습니다.

아이디 password 이름 근속연수(년)
Apple 5863 정유진 5
Banana 2645 옥금비 2
Choco 8763 이예은 15
tomato 0416 최수림 22

제가 구현한 코드는 이렇습니다.

main.cpp

#include "Employee.h"
#include <iostream>
using namespace std;
int main() {

    string id, ps;
    string getID[4] = { "Apple","Banana","Choco","tomato" };
    string getPassword[4] = { "5863","2645","8763","0416" };

    //미리 정의를 해 놓아야 오류가 나지 않는다.
    // Class 객체로 이뤄진 배열 생성(동적 할당) 및 초기화



    Employee* p = new Employee[4]{
    Employee("Apple", "5863", "정유진", 5),
    Employee("Banana","2645","옥금비",2),
    Employee("Choco", "8763", "이예은", 15),
    Employee("tomato", "0416", "최수림", 22),
    };


 //배열을 정의한다. 순서대로 아이디, 패스워드, 이름, 근속년수 순.
    // 배열의 길이는 4, 직원들의 정보를 넣어 초기화 

    while (1) {
        cout << "찾는 사용자의 아이디를 입력하시오 : ";
        string ID;
        cin >>ID; //아이디이므로 배열을 입력받는다.



        cout << "해당 아이디에 맞는 password를 입력하시오: ";
        string PASSword;
        cin >> PASSword; //패스워드이므로 패스워드를 입력받는다.




            //만약 입력받은 id 값이 getID의 목록 안에 있고, 입력받은 password 값이 getPassword 안에 있다면



        // 동일한 정보가 있다면 이름과 근속 연수를 출력하고, 없으면 "사용자 없음" 출력 
        // 만약 아이디와 Password가 모두 “0000” 이면 프로그램 종료 

            delete p;

            // 배열 동적 할당의 초기화
        // 종료할 때 동적 할당한 메모리의 반환을 확실히 할 것
    }
    return 0;


    }
Employee.cpp

#include "Employee.h" //헤더 파일을 포함한다.
#include <iostream> //cout과 cin을 이용하기 위한 include문이다.
using namespace std; //std::을 생략하기 위한 구문이다.


Employee::Employee() {

}

Employee::Employee(string id, string password, string name, int year)  //
{

Employee Employee = { id, password, name, year };
    return ;




}

//{} 내부를 작성해서 사용
string Employee::getID() //getID:id를 받는다는 의미
{
    string ID;
     Employee p[4] = { 
        Employee("Apple", "5863", "정유진", 5),
        Employee("Banana", "2645", "옥금비", 2),
        Employee("Choco", "8763", "이예은", 15),
        Employee("tomato", "0416", "최수림", 22)
    };
    if(ID==)
    return;
}

string Employee::getPassword() //password를 받는다는 의미
{

    return;
    //배열을 초기화시킨다. 이 배열은 메인 함수의 p[1]이 된다.

}
//getPassword:  패스워드를 받는다는 의미

string Employee::getName(string id, string ps)
{
    return;

}

//배열을 초기화시킨다. 이 배열은 메인 함수의 p[2]가 된다.

int Employee::getYear(string id, string ps) {

    return 0;
}

void Employee::printEmp(string id, string ps) { }
void Employee::setYear(int year) {}
Employee::~Employee() {

    cout << "입력이 끝났습니다. 이용해 주셔서 감사합니다. " << endl;

}//소멸자
Employee.h

#pragma once

#ifndef EMPLOYEE_H
#define EMPLOYEE_H
#include<iostream>
#include<string>

using namespace std;
class Employee {
private: 
    string e_id; // 아이디
    string e_password; // 나이 
    string e_name; // 이름 
    int e_year; // 근속연수 
public:
    Employee(); //기본 생성자
    Employee(string id, string password, string name, int year); //문제 2번에서는 depart가 안쓰인다.
    //매개변수를 입력 받는 생성자


    //각각의 멤버변수의 값을 반환하는 함수
    string getID();
    string getPassword();
    string getName(string id, string ps);
    int getYear(string id, string ps);

    // 이름,근속 연수를 출력해주는 함수
    void printEmp(string id, string ps);

    //기존 멤버 변수 값을 변경해주는 함수 
    void setYear(int year);

    ~Employee(); // 소멸자
};
#endif

질문: 이렇게 코딩을 했는데

  1. 과연 객체 배열의 동적 할당을 알맞게 했는지,
  2. 아니라면 어떤 방법으로 해야 하는지 궁금합니다.

고수님들의 답변을 간절히 기다립니다.

감사합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)