问题描述
我正在使用一个库,该库有一个在其构造函数中采用可变数量参数的类。当我更改此类以使其从虚拟基类继承时,如下所示:
class A:public virtual B {
public:
A(int i,...);
}
编译器给出以下警告:
'function' : 具有虚基类的构造函数有 '...';调用可能与旧版本的 Visual C++ 不兼容
Ms docs 关于警告 C4256 的主题是这样说的:
可能不兼容。 考虑以下代码示例。如果构造函数 S2::S2( int i,... ) 的定义是使用版本 7 之前的 Microsoft C++ 编译器版本编译的,但以下示例是使用当前版本编译的,则调用构造函数由于特殊情况调用约定的更改,S3 将无法正常工作。如果两者都是使用 Visual C++ 6.0 编译的,则调用也不会完全正确,除非没有为省略号传递参数。
谁能告诉我“特殊情况调用约定更改”是什么?据我了解,所有可变参数函数一直都实现为 cdecl?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)