반응형
다음과 같이 클래스 템플릿에서 특정 함수의 인자로 타입마다 다른 인자를 받고 싶을 때 함수를 다음과 같은 규격으로 작성해야 한다.
template <typename T>
class A
{
public:
template <typename... Type>
T* Get(Type... _Args);
};
template <typename T>
template <typename... Type>
T* A<T>::Get(Type... _Args)
{
return new T(_Args...);
}
int main()
{
A<Vector2> a;
A<Vector3> b;
Vector2* pVec2 = a.Get(3, 4);
cout << pVec2->X << ", " << pVec2->Y << endl;
Vector3* pVec3 = b.Get(3, 4, 5);
cout << pVec3->X << ", " << pVec3->Y << ", " << pVec3->Z << endl;
return 0;
}
'C,C++ > C++' 카테고리의 다른 글
[C++ 17] 템플릿 특수화보다 사용하기 좋은 if constexpr (0) | 2021.01.01 |
---|---|
[C++] placement new - 내가 원하는 메모리에 객체를 할당하고 싶다면 (0) | 2020.12.25 |
Heap 메모리 장단점(Windows) (0) | 2020.09.29 |
[C++] std::priority_queue 구조 알아 보기 | 우선순위 큐, 최대힙, 최소힙 (0) | 2020.09.27 |
[C++] bool 타입 변수 true/false 형식으로 출력하기 (0) | 2020.09.13 |
댓글