제목에 문자열과 문자 포인터에 대한 함수 템플릿을 특수화하고 싶다고 말하면서 지금까지 this을 수행했지만 참조로 문자열 매개 변수를 전달할 수 없습니다 .std :: string 및 char에 대한 특수 함수 템플릿 *
#include <iostream>
#include <string.h>
template<typename T> void xxx(T param)
{
std::cout << "General : "<< sizeof(T) << std::endl;
}
template<> void xxx<char*>(char* param)
{
std::cout << "Char ptr: "<< strlen(param) << std::endl;
}
template<> void xxx<const char* >(const char* param)
{
std::cout << "Const Char ptr : "<< strlen(param)<< std::endl;
}
template<> void xxx<const std::string & >(const std::string & param)
{
std::cout << "Const String : "<< param.size()<< std::endl;
}
template<> void xxx<std::string >(std::string param)
{
std::cout << "String : "<< param.size()<< std::endl;
}
int main()
{
xxx("word");
std::string aword("word");
xxx(aword);
std::string const cword("const word");
xxx(cword);
}
또한 template<> void xxx<const std::string & >(const std::string & param)
일이 제대로 작동하지 않습니다.
파라미터를 T&
으로 허용하도록 원래 템플릿을 재정렬하면 char *
은 코드의 정적 텍스트에는 적합하지 않은 char * &
이어야합니다.
도와주세요!
이제 컴파일되지 않습니다! 'strlen'을 위해서''을 되돌려 주어야합니다. –
TonyK