목록의 일종으로 함수 매개 변수를 저장하는 것이 가능하며 나는내가 기본 클래스</p> <pre><code>template<class T> class Base { public: Base(T foo = T()) { for(int i = 0; i < 10; i++) foos.push_back(foo); } private: std::vector<T> foos; } </code></pre> <p>에게이
나는이 뭘 원하는class Derived : public Base<Bar>
{
public:
Derived() : Base(Bar("somerandomparameter")) {}
}
이 만드는 것입니다 파생 클래스를 가지고 제공된 컨스트럭터를 가진 10 개의 새로운 바의 벡터 (그것이 무엇이든간에).
사용자 정의 복사본 생성자를 만들려고했지만 push_back 메서드가 더 많은 복사본을 만드는 것처럼 보이기 때문에 예상대로 작동하지 않았습니다. 적어도 Bar
생성자는 10 번 이상 호출되었습니다.
나에게 가장 적합한 솔루션은 원하는 매개 변수를 10 개만 생성하기 때문에 매개 변수 목록을 전달하는 것과 같습니다.
...
Base(ParameterList l)
{
for(int i = 0; i < 10; i++)
foos.push_back(T(l));
}
...
그러나 이후
내가 어떤 유형 또는 필요T
매개 변수의 수에 적응 될 그 목록이 필요 템플릿 클래스입니다. 그 일을하는 방법이 있습니까 아니면 내가하고 싶은 일을하는 더 나은 방법을 알고 있습니까?
C++ 11은 [가변 템플릿] (http://en.cppreference.com/w/cpp/language/parameter_pack)을 허용합니다. 당신은 표준 C++ –