절두 절미 하고 샘플 코드 부터 보여주도록 한다.
#include <iostream>
using namespace std;
class A {
public:
virtual void P() {
cout << "A" << endl;
}
};
class B : public A {
public:
B(int a) {}
void P() override
{
cout << "B" << endl;
}
};
class GameObject {
A* coms;
public:
template <class T, class... T2>
T* Add(T2&&... ar)
{
auto a = new T(_STD forward<T2>(ar)...);
coms = a;
return a;
}
};
int main()
{
GameObject a;
a.Add<B>(1)->P();
}
템플릿으로 임의의 클래스 생성자를 호출하도록 만드는 방법이다.
'...'연산자와 오른값 참조, forward 함수의 호출이 주요 포인트가 되겠다.
'Programming' 카테고리의 다른 글
Template 연구 - Enum과 Template 임의 다중 상속 (0) | 2020.01.21 |
---|---|
Variadic Template :: arguments 분리하여 변수로 사용하기 (0) | 2020.01.20 |
[C++] std::unordered_map // std::unordered_multimap (0) | 2020.01.15 |
[C++]delete unique_ptr<T>.get() (0) | 2020.01.09 |
[C++] constexpr (0) | 2019.12.19 |