윤성우 열혈 c++ 프로그래밍에서 예제 준 거 그대로 적어봤는데 이렇게 오류가 뜨네요
strcpy는 strcpy_s로 바꿔서 고쳤는데 빨간 줄 쳐저 있는 곳에서
Person(char *myname, int myage) 생성자를 호출하는게 아니라 다른 생성자를 호출하려는거 같은데
Person(char *myname, int myage) 생성자를 호출할 방법이 있을까요?
윤성우 열혈 c++ 프로그래밍에서 예제 준 거 그대로 적어봤는데 이렇게 오류가 뜨네요
strcpy는 strcpy_s로 바꿔서 고쳤는데 빨간 줄 쳐저 있는 곳에서
Person(char *myname, int myage) 생성자를 호출하는게 아니라 다른 생성자를 호출하려는거 같은데
Person(char *myname, int myage) 생성자를 호출할 방법이 있을까요?
문자열 앞에 (char *)을 붙여줘서 명시적 형변환을 때려줘서 넣거나 char * 변수에다 문자열을 넣고 다시 생성자에다 그걸 넣으면 될 듯요
고마워요
보통 에러메세지 복붙해서 검색하면 나옵니다 안나오면 본인 코드에만 있을 이름(변수명등)들을 빼보거나 영어로 바꿔보면 대부분 나옵니다
char * 형에 const char * 를 넘기니까 그러지. c언어에서 "Nuu Karl Hup" 문자열 상수는 const char * 형 상수거든. 딱 13문자네. "누 칼 협" 을 (char*) 형으로 강제 형변환해서 넘기던가, 아니면 Person 생성자의 첫번째 인수를 const char *로 선언하던가. 윤성우 열혈 c++ 보니까 2004년도에 쓰여진 책이네. 그 시절 c++ 컴파일러는 char* 형 매개변수에 문자열 상수를 콩떡같이 쳐박아도 찰떡같이 받아먹으며 warning 만 쳐뿌리는 수준이었는데 요즘은 안그러니까.
덕분에 해결했음 고맙다
c/c++ 의 문자열은 stl을 쓰지 않는 이상 다른 언어와는 달리 관리가 좀 복잡함. 글타고 첨부터 stl 로 배울거면 c/c++ 을 배워선 안되니까. 문자열 상수 "누 칼 협" 이라고 쓰면 컴파일러는 이 문자열이 저장된 읽기 전용 메모리 공간의 시작주소(포인터)값으로 치환함. 그런데 니가 char * 형 인수로 받는다고 선언하면 이 주소값의 데이터를 변형할 수도 있다는 의도인데 "누 칼 협" 은 수정하면 에러 나는 읽기 전용이잖아? 옛날 컴파일러는 뭐 프로그래머가 알아서 하라고 이런거 다 넘어가줬는데, 요즘은 엄격해져서 이런거 다 에러처리임. 가능하면 DOS 에뮬레이터라도 써서 어셈블리어 기초만이라도 배우고 c/c++ 을 배우는걸 추천함. 그럼 포인터와 메모리 개념이 확실히 잡히니까.