如何實現X
構造函數並使用可變參數列表初始化Base
類?模板繼承和可變參數
#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'是一個模板,只有你使用的成員將被實例化。 –