X
생성자를 구현하고 가변 인수 목록이있는 Base
클래스를 초기화하는 방법은 무엇입니까?템플릿 상속 및 varargs
#include<cstdarg>
class A
{
private:
int m_a;
public:
A(int a): m_a(a) {}
};
class B: public A
{
private:
int m_b;
public:
B(int a, int b):A(a), m_b(b){}
};
template <class Base>
class X: public Base
{
public:
//X(...):Base(...)
};
int main()
{
X<A> x(7)
X<B> x(3,5);
return 0;
}
나는 A
, B
클래스를 수정할 수 없습니다입니다. 는 C++ 11 이상 표준
'X '에 대해 두 개의 다른 생성자를 사용하는 것은 어떻습니까? –
그러면 두 사람은 동시에 A와 B와 호환되어야합니다. (내가 귀하의 제안을 올바르게 이해 한 경우) – ataman
아니요, 단일 매개 변수와 두 개의 매개 변수가있는 하나의 생성자가있는 하나의 생성자를 가질 수 있습니다. 그런 다음 적절한 것을 사용하십시오. 'X'는 템플릿이므로, 여러분이 사용하는 멤버들만 인스턴스화됩니다. –