> 백엔드 개발 > C++ > C에서 '정적 constexpr char[]에 대한 정의되지 않은 참조' 오류가 발생하는 이유는 무엇입니까?

C에서 '정적 constexpr char[]에 대한 정의되지 않은 참조' 오류가 발생하는 이유는 무엇입니까?

DDD
풀어 주다: 2024-12-17 03:42:25
원래의
176명이 탐색했습니다.

Why Do I Get an

예기치 않은 오류: 클래스 정의에서 "정적 constexpr char[]에 대한 정의되지 않은 참조

"정적 constexpr char[에 대한 정의되지 않은 참조" 발생 ]" 클래스 내에서 정적 const char 배열을 정의하는 동안 오류가 발생하면 당황스러울 수 있습니다. 문제를 자세히 살펴보고 해결책을 살펴보겠습니다.

오류 메시지에 강조 표시된 대로 컴파일러는 정적 멤버에 대한 정의를 기대합니다. 제공된 코드 조각에서 클래스 정의 내에 선언과 초기화 프로그램을 포함했지만 .cpp 파일에 별도의 정의를 제공하지 않았습니다.

이 문제를 해결하려면 다음 단계를 따르세요.

  1. 정의 제공:

.cpp 파일에서 아래와 같이 이니셜라이저 없이 정적 멤버를 선언하여 정의를 추가합니다.

constexpr char foo::baz[];
로그인 후 복사
  1. 선언과 이니셜라이저를 그대로 유지하세요.

.hpp 파일의 정적 멤버에 대한 클래스 선언 및 초기화 프로그램을 그대로 유지합니다.

설명:

C에서 정적 멤버는 컴파일 중에 메모리를 할당하고 클래스의 모든 인스턴스에서 공유됩니다. 정적 const char 배열을 정의할 때 선언과 초기화가 모두 헤더 파일(.hpp)에 포함되어야 합니다. 다만, 연동 문제를 해결하려면 구현 파일(.cpp)에 정의(이니셜라이저 없이)를 별도로 제공해야 합니다. 이렇게 하면 연결 중에 정적 멤버에 대한 정의에 액세스할 수 있어 "정의되지 않은 참조" 오류가 해결됩니다.

위 내용은 C에서 '정적 constexpr char[]에 대한 정의되지 않은 참조' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿