본문 바로가기
C,C++/C++

클래스에서 가변 인자 템플릿 이용 시 함수 선언 방법

by woohyeon 2020. 12. 2.
반응형

다음과 같이 클래스 템플릿에서 특정 함수의 인자로 타입마다 다른 인자를 받고 싶을 때 함수를 다음과 같은 규격으로 작성해야 한다.  

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;
}

 




댓글