c++ - 模板继承和可变参数

标签 c++ templates variadic-functions

如何实现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;
}

我不允许修改AB类。 不能使用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/

相关文章:

c++ - 如何从 UDP 套接字 (Windows C++) 获取 IP 信息?

javascript - Reactive Meteor Templates and Deps Dependency——当另一个模板改变或重新渲染时更新模板

python - 如何使用 PySpark 将变量参数传递给 Spark Dataframe?

java - 重载可变参数

c++ - const 引用数据成员绑定(bind)到在构造函数中临时初始化该引用

c++ - 支持长 double 的最喜欢/最佳 A.X=B 求解器?

c++ - 如何约束模板参数以符合 std::map 中的键?

c++ - 基于其他模板定义从模板类到原始类型的隐式转换

C++11 访问每个可变参数

c++ - 我可以在 QDomDocument 中找到所有具有给定属性的 XML 节点吗?