나는 명확한 답을 찾고 있었고, 웹에서 약간의 부분을 잡아 냈습니다.명시 적 템플릿 함수 및 메서드 전문화
나는 함수를 가지고 있으며, 변수에 따라 다르게 행동해야한다. 함수는 인수를 취하지 않으므로 오버로드가 작동하지 않아 템플릿 전문화가 이루어집니다. 예 :
//Calls to this function would work like this:
int a = f();
int b = f<int>();
int c = f<char>();
//...
먼저 문법적으로 가능합니까? 나는 그것이있는 것처럼 느낀다. 계속.
이 기능을 정의하는 데 문제가 있습니다. 명시 적 전문화를 위해 구문에 매달렸 기 때문에. 여러 가지 접근법을 시도했지만, 아직 간단한 예제를 얻지 못했습니다.
두 번째로 (필연적으로) 해당 템플릿 함수를 (템플릿이 아닌) 클래스의 템플릿 메서드로 만들려고합니다. 내가 그 다리에 올 때 나는 그 다리를 건너 죠.
감사합니다,
이안
감사합니다. 나는 이것을 추측했었다.하지만 링커는 다중으로 정의 된 심볼이 있다고 계속해서 말하고 있었다. – imallett
당신은 머리말에 그것들을 적었고 몇몇 번역 단위들에서 포함 시켰습니까? 템플릿 함수를 명시 적으로 특수화한다는 것은 그러한 의미에서 일반적인 함수와 같습니다. 그것들을'inline' 또는 이름없는 네임 스페이스 (C++'static'에 상응하는 것) 내에서 정의해야합니다. 그렇지 않으면 헤더에서 선언하고 cpp 파일에 정의하십시오. –
예 헤더에 있음; 그러나 경호원이 포함되어 있습니다. 이름없는 네임 스페이스 xor 또는 인라인으로 작업 할 수있었습니다. 그러나, 내가 두 번째 문제 (메서드로 바꾸면)가되면 다시 실패합니다 (인라인 시도). 지금까지 .cpp 파일에 넣는 것처럼, iirc는 C++에서 템플릿을 구현과 분리하는 데 문제가 없었습니까? – imallett