and*_*ras 2 c++ g++ visual-c++ c++11
在C++ 11中,您可以从基类继承所有构造函数.构造函数继承如何针对默认参数进行操作?
请考虑以下代码:
struct Base
{
Base(int x, int y=0, int z=0)
{
}
};
struct Derived : public Base
{
using Base::Base;
};
int main() {
Base B(1,2);
Derived D(2,2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这不能在MSVC13上编译,并出现以下错误:
..\constructor_test\main.cpp(16) : error C2660: 'Derived::Derived' : function does not take 2 arguments
Run Code Online (Sandbox Code Playgroud)
但是,它在GCC上运行正常(请参阅http://ideone.com/nNmXHo).所以我的问题是:
不应该生成一个,两个和三个参数的构造函数吗?哪个编译器在这里正确?MSVC13或GCC?如果GCC是正确的,MSVC是否有任何已知的解决方法(除了再次明确指定构造函数)?
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |