이 코딩 인수목록이 일치하지 않다는게 무슨말인가요?

조회수 262회
#include <iostream>

#include <cstring>
using namespace std;
private:
    char * name;
    char * company;
    char * tel;
    int position;
public:
    Namecard(char * n, char * c, char * t, int pos) :position(p)
    {
        name = new char[strlen(n) + 1];
        company = new char[strlen(c) + 1];
        tel = new char[strlen(t) + 1];
        strcpy(name, n);
        strcpy(company, c);
        strcpy(tel, t);
    }
    void showcard() {
        cout << "이름: " << name << endl;
        cout << "회사: " << company << endl;
        cout << "전화: " << tel << endl;
        cout << "직책: "; COMP_POS::showposition(position);
    }
    ~Namecard() {
        delete[]name;
        delete[]company;
        delete[]tel;
    }
};

int main(void)
{
    Namecard manclerk("Lee," "ABC", "010-2222-1111", COMP_POS::CLERK);
    Namecard mansenior("kim," "DEF", "010-3222-5555", COMP_POS::SENIOR);
    Namecard manassist("park," "SAM", "010-7777-1111", COMP_POS::ASSIST);
    return 0;
}

메인함수에서 생성자를 위처럼 설정했더니 인수목록이 일치하는 생성자 namecard::namecard의 인스턴스가 없다 라고 오류가 뜨는데 뭐가 잘못된 건지 어떻게 고쳐야 하는지 알 수 있을까요?

1 답변

  • C++은 C보다 매개변수 형식 지정이 엄격합니다. C 스타일 문자열을 매개변수로 받으려면 const char *을 지정해 줘야 합니다.

    Namecard(char * n, char * c, char * t, int pos) :position(p)
    

    위의 줄을 아래처럼 바꾸시면 됩니다.

    Namecard(const char* n, const char* c, const char* t, int pos) :position(p)
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

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

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

(ಠ_ಠ)
(ಠ‿ಠ)