如何实现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或更高标准
最佳答案
template <class Base>
class X: public Base
{
public:
X(int a, int b) : Base(a, b) { }
X(int a) : Base(a) { }
};
是的,这确实有效。 X
的构造函数在您尝试使用它们之前不会被实例化,所以一切都很好。没有讨厌的可变参数需要处理!
关于c++ - 模板继承和可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42578823/