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
질문: 이렇게 코딩을 했는데
- 과연 객체 배열의 동적 할당을 알맞게 했는지,
- 아니라면 어떤 방법으로 해야 하는지 궁금합니다.
고수님들의 답변을 간절히 기다립니다.
감사합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력