c++用va_arg调用超类构造函数
c++ calling superclass constructor with va_arg
我有一个基类,它包括一个带可变参数列表的构造函数:
class Super {
public:
Super(int num, ...);
...
}
现在,在我的子类构造函数中,我需要以某种方式调用这个超类构造函数,但我该怎么做呢?通常的事情,自然,不起作用:
class Sub {
public:
Sub(int num, ...) : Super(???) { ... }
...
}
那么我用什么来代替???
我确实有另一个接受向量的构造函数,但是有一个这样的构造函数是客户端的直接要求。
与任何变量函数一样,也始终提供列表版本:
void foo(int a, ...) { va_list ap; va_start(ap, a); vfoo(a, ap); va_end(ap); }
void vfoo(int a, va_list ap) { /* actual implementation */ }
相同:
#include <cstdarg>
struct Super
{
Super(int num, ...) : Super(num, (va_start(ap_, num), ap_)) { va_end(ap_); }
Super(int num, va_list ap);
private:
va_list ap_;
};
您的派生类将执行相同的蒸发操作,然后使用超构造函数的列表形式。
如果仅仅为了构造而使用数据成员使您感到不安,并且您的类在其他方面是可复制或可移动的,那么您也可以放弃变量构造函数,而使用一个命名的静态成员函数来完成包包装。
相关文章:
- 在从给定超类继承的所有类上调用虚函数
- 按值将对象传递给 SubClass 构造函数,导致超类的构造函数不调用
- 将 void* 强制转换为多个继承类的超类不会调用正确的方法
- 我可以从我的超类调用子类构造函数吗?
- C++ 如何使用一个参数从派生类构造函数中调用具有两个参数的超类构造函数
- 如何在 c++ 中从模板基类的构造函数调用模板超类的构造函数?
- 从构造函数的主体调用超类构造函数
- 调用超类函数继承 c++
- 在子类的构造函数中调用超类的构造器两次
- 调用子重写时,始终调用超类虚拟函数
- 调用超类上不存在的子类函数
- c++使用计算参数调用超类构造函数
- C++调用超类
- 从子类中调用超类
- c++继承.对象调用超类方法而不是自己的方法
- 多级继承而不调用超类构造函数
- 子类调用超类构造函数
- c++用va_arg调用超类构造函数
- 子类如何使用与子类相同的方法名来调用超类的方法
- 是否有时间不调用超类的构造函数C++?