내가 C#을, PHP 및 기타 물건에 오랜만에 ++ 다시 C로 설정 바인딩 내가 뭔가 이상한 발견C + +를 배열로 strcpy를 상수가 아닌 표현
temp.name = new char[strlen(name) + strlen(r.name) + 1];
이
temp.name = (char *)malloc(sizeof(char[strlen(name)
+ strlen(r.name) + 1]));
를 컴파일을 이하지 않는
컴파일러 에러
,691이다 (temp.name는 숯 *이다)오류 C2540가 : 배열과 같은 비 상수 식 이
을 결합
사람이 문제가 될 수 있으며이 어떻게 해결 될 수있는 무엇을 알고 있나요? 고맙습니다.
C++을 사용하는 경우 char 배열을 잊어 버리고 std :: string을 사용하십시오. –
프로그램 텍스트가 동일하게 보이지만, 의미는 매우 다릅니다. C++에는 크기가 0 또는 런타임 값인 배열 유형이 있습니다. 그러나이 배열 타입은'new-type-id'에 의해서만 접근 가능합니다. 선언 된 배열에 대한 타입 지정자는 new-type-ids를 사용하지 않으므로이 "멋진"타입을 나타낼 수 없습니다.'new (char [strlen (name)]); 또는'new (char [0]);'를 쓰고, 컴파일러와 함께 실패하는 것을 주목하라 : 괄호는 컴파일러를'type 'new-type-id' 대신에 -id'를 사용합니다. 비슷하게,'sizeof'는'type-id'를 기대합니다. –