문자열 리터럴을 비유형 템플릿 인수로 전달
C 템플릿 영역에서 문자열 리터럴을 다음과 같이 허용하는 클래스 템플릿을 선언합니다. 유형이 아닌 템플릿 매개변수는 복잡한 작업이 될 수 있습니다. 많은 프로그래머는 템플릿 선언에서 my_class<"string">과 같은 문자열 리터럴을 직접 지정하는 기능을 원합니다.
이러한 요구를 해결하기 위해 C에서는 문자열 리터럴을 비유형으로 직접 전달하는 것을 허용하지 않습니다. 인수를 사용하는 경우 const 문자 배열을 활용하는 솔루션을 사용할 수 있습니다. 정적으로 연결된 const char[] 변수를 정의하고 이를 템플릿 매개 변수로 전달하면 문자열 리터럴을 사용하는 것과 비슷한 효과를 얻을 수 있습니다.
다음은 이 접근 방식을 보여주는 컴파일 가능한 코드 조각입니다.
#include <iostream> template<const char *str> struct cts { void p() {std::cout << str;} }; static const char teststr[] = "Hello world!"; int main() { cts<teststr> o; o.p(); }
이 예에서는 teststr이라는 정적으로 연결된 const char[] 변수가 "Hello world!" 값으로 정의됩니다. teststr을 비유형 템플릿 매개변수로 cts 클래스 템플릿에 전달함으로써 문자열 리터럴을 사용하는 원하는 동작을 효과적으로 달성할 수 있습니다.
이 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Hello world!
이 기술은 C에서 문자열 리터럴을 비유형 템플릿 인수로 전달하는 것에 대한 직접적인 지원 부족에 대한 해결 방법을 제공하여 프로그래머가 편리한 방식으로 문자열과 같은 값을 허용하는 클래스 템플릿을 정의할 수 있도록 합니다. 매너입니다.
위 내용은 C에서 문자열 리터럴을 비유형 템플릿 인수로 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!