이 article은 C#에서 + 연산자가 정의 된 임의의 값 형식을 추가 할 수있는 방법을 설명합니다. 본질적으로 다음과 같은 코드를 할 수 있습니다 :임의의 값 형식에 대한 연산
public T Add(T val1, T val2)
{
return val1 + val2;
}
거기에 T 유형이 '+'연산자에 대한 정의가된다는 보장은 없지만, 효과는 다음과 같은 코드로 달성 될 때이 코드는 컴파일되지 않습니다 :
public T Add(T val1, T val2)
{
//Num<T> defines a '+' operation which returns a value of type T
return (new Num<T>(val1) + new Num<T>(val2));
}
Num 클래스가이를 어떻게 달성하는지 보려면 링크를 클릭하십시오. 어쨌든, 질문에. C 또는 C++에서 동일한 효과를 얻을 수있는 방법이 있습니까? 호기심에 대한, 내가 해결하려고하는 문제는 CUDA 커널이 더 많은 유형에서 작동하도록함으로써 더 유연하거나 일반적이되도록 허용하는 것입니다.
업데이트 : .NET의 경우 Marc Gravell이 연산자 문제를 매우 우아하게 해결하는 utility library을 만들었습니다. 방식으로 인해 템플릿
은
주목할 가치가있는 점은 C++ 템플릿과 함께 작동하는 방식이 'duck typing'형식으로 지정되었습니다. 기본적으로 당신은 실제로 원하는 타입에서 벗어나 '대신 메소드와 오퍼레이션 X, Y 등을 지원해야합니다'라고 말합니다. 루비의 기본 유형 메커니즘으로도 사용됩니다. – workmad3