예기치 않은 오류: 클래스 정의에서 "정적 constexpr char[]에 대한 정의되지 않은 참조
"정적 constexpr char[에 대한 정의되지 않은 참조" 발생 ]" 클래스 내에서 정적 const char 배열을 정의하는 동안 오류가 발생하면 당황스러울 수 있습니다. 문제를 자세히 살펴보고 해결책을 살펴보겠습니다.
오류 메시지에 강조 표시된 대로 컴파일러는 정적 멤버에 대한 정의를 기대합니다. 제공된 코드 조각에서 클래스 정의 내에 선언과 초기화 프로그램을 포함했지만 .cpp 파일에 별도의 정의를 제공하지 않았습니다.
이 문제를 해결하려면 다음 단계를 따르세요.
.cpp 파일에서 아래와 같이 이니셜라이저 없이 정적 멤버를 선언하여 정의를 추가합니다.
constexpr char foo::baz[];
.hpp 파일의 정적 멤버에 대한 클래스 선언 및 초기화 프로그램을 그대로 유지합니다.
설명:
C에서 정적 멤버는 컴파일 중에 메모리를 할당하고 클래스의 모든 인스턴스에서 공유됩니다. 정적 const char 배열을 정의할 때 선언과 초기화가 모두 헤더 파일(.hpp)에 포함되어야 합니다. 다만, 연동 문제를 해결하려면 구현 파일(.cpp)에 정의(이니셜라이저 없이)를 별도로 제공해야 합니다. 이렇게 하면 연결 중에 정적 멤버에 대한 정의에 액세스할 수 있어 "정의되지 않은 참조" 오류가 해결됩니다.
위 내용은 C에서 '정적 constexpr char[]에 대한 정의되지 않은 참조' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!