c++ 생성자 관련 질문
조회수 6330회
#include <iostream>
#include <cstring>
using namespace std;
namespace COMP_POS {
enum {
CLERK = 1, SENIOR, ASSIST, MANAGER
};
void ShowPositionInfo(int pos)
{
switch (pos) {
case CLERK:
cout << "사원" << endl;
break;
case SENIOR:
cout << "주임" << endl;
break;
case ASSIST:
cout << "대리" << endl;
case MANAGER:
cout << "과장" << endl;
}
}
}
class NameCard {
private:
char * name;
char * company;
char * phone;
int position;
public:
NameCard(char * name, char * company, char * phone, int mypos) : position(mypos)
{
this->name = new char[strlen(name) + 1];
strcpy(this->name, name);
this->company = new char[strlen(company) + 1];
strcpy(this->company, company);
this->phone = new char[strlen(phone) + 1];
strcpy(this->phone, phone);
}
NameCard(const NameCard ©) : position(copy.position)
{
name = new char[strlen(copy.name) + 1];
strcpy(name, copy.name);
company = new char[strlen(copy.company) + 1];
strcpy(company, copy.company);
phone = new char[strlen(copy.phone) + 1];
strcpy(phone, copy.phone);
}
void ShowNameCardInfo()
{
cout << "이름 : " << name << endl;
cout << "회사 : " << company << endl;
cout << "전화번호 : " << phone << endl;
cout << "직급 : ";
COMP_POS::ShowPositionInfo(position);
cout << endl << endl;
}
~NameCard()
{
delete[]name;
delete[]company;
delete[]phone;
cout << "called destructor!" << endl;
}
};
int main()
{
NameCard manClerk("Lee", "ABC", "010-8200-6545", COMP_POS::CLERK);
NameCard copy1 = manClerk;
NameCard manSenior("Hong", "Organge", "01-8222-54545", COMP_POS::SENIOR);
NameCard copy2 = manSenior;
copy1.ShowNameCardInfo();
copy2.ShowNameCardInfo();
return 0;
}
윤성우의 열혈 c++ 프로그래밍을 교재삼아 공부하고 있는 중입니다. 위는 예제 중 하나를 푼 것인데 main함수에서 manClerk 과 manSenior 부분에서 각각 "Lee" 와 "Hong"에서 붉은 줄이 쳐지면서
인수 목록이 일치하는 생성자 "NameCard::NameCard"의 인스턴스가 없습니다.
라는 오류가 뜹니다...
책의 답안과 다른 것이 없는데 왜 이런 오류가 생길까요...?
댓글 입력