Api MSVC C++;11:非标准构造函数继承 在我的Windows原生C++库中,有时我在构造函数方面做得太过了,而没有提供具有相同功能的实际方法(5-10个额外的构造函数)。这使得基本上扩展C++类非常困难,因为没有适当的构造函数继承(不重新声明它们和转发调用)。

Api MSVC C++;11:非标准构造函数继承 在我的Windows原生C++库中,有时我在构造函数方面做得太过了,而没有提供具有相同功能的实际方法(5-10个额外的构造函数)。这使得基本上扩展C++类非常困难,因为没有适当的构造函数继承(不重新声明它们和转发调用)。,api,visual-c++,c++11,coding-style,Api,Visual C++,C++11,Coding Style,我使用MSVC。(是的,你想笑就笑!)问题是:除了使用和的默认构造函数/复制构造函数外,有没有其他方法可以继承构造函数?因为,如果有人决定扩展一个我滥用构造函数的类(不添加新属性和单一继承),那将是一场噩梦 (示例代码) 类父类{ 公众: 父项(){ std::cout委派/继承董事: parent(const std::nullptr_t&):parent() { /* ... */ 这是一个委托器[class.base.init]/6,而 using parent::parent;

我使用MSVC。(是的,你想笑就笑!)问题是:除了使用
的默认构造函数/复制构造函数外,有没有其他方法可以继承构造函数?因为,如果有人决定扩展一个我滥用构造函数的类(不添加新属性和单一继承),那将是一场噩梦

(示例代码)

类父类{
公众:
父项(){

std::cout委派/继承董事:

parent(const std::nullptr_t&):parent() { /* ... */
这是一个委托器[class.base.init]/6,而

using parent::parent;
根据C++11标准[class.inhctor]从父级继承构造函数(除复制/移动构造函数外的所有构造函数)

问题是:除了使用默认的复制构造函数外,是否有方法继承构造函数

是的,对于C++11.MSVC还不支持这一点,并且根据,VS2013将支持委托构造函数(但没有提到继承构造函数)

我还想知道,对于C++11,为什么他们没有发现当我扩展单个类而不添加新属性时,它应该继承父类的默认行为

没有假设。您的派生类可能需要以不同的方式初始化。继承构造函数只需一行即可解决此问题


像第三版这样的东西有可能实现吗

我知道这个问题,但我没有掌握最新的草案和建议,无法回答C++1y的问题。对于C++11,这是不可能的-您可以使用宏使其更短(但不一定更好):

#定义为空
#定义DEF_MYCLASS_MEM(RET)模板RET MYCLASS::
#定义MYCLASS\u类型类型名称MYCLASS
DEF_MYCLASS_MEM(空)MYCLASS(){}
DEF_MYCLASS_MEM(MYCLASS_TYPE::tString)Method1(const tString&aParam)const{
返回aParam;
}

委派/继承股东:

parent(const std::nullptr_t&):parent() { /* ... */
这是一个委托器[class.base.init]/6,而

using parent::parent;
根据C++11标准[class.inhctor]从父级继承构造函数(除复制/移动构造函数外的所有构造函数)

问题是:除了使用默认的复制构造函数外,是否有方法继承构造函数

是的,对于C++11.MSVC还不支持这一点,并且根据,VS2013将支持委托构造函数(但没有提到继承构造函数)

我还想知道,对于C++11,为什么他们没有发现当我扩展单个类而不添加新属性时,它应该继承父类的默认行为

没有假设。您的派生类可能需要以不同的方式初始化。继承构造函数只需一行即可解决此问题


像第三版这样的东西有可能实现吗

我知道这个问题,但我没有掌握最新的草案和建议,无法回答C++1y的问题。对于C++11,这是不可能的-您可以使用宏使其更短(但不一定更好):

#定义为空
#定义DEF_MYCLASS_MEM(RET)模板RET MYCLASS::
#定义MYCLASS\u类型类型名称MYCLASS
DEF_MYCLASS_MEM(空)MYCLASS(){}
DEF_MYCLASS_MEM(MYCLASS_TYPE::tString)Method1(const tString&aParam)const{
返回aParam;
}

根据的VS2013路线图,继承构造函数在不久的将来不会出现在VC++中:


它们是“计划中的”。

根据VS2013路线图,继承构造函数在不久的将来不会出现在VC++中:


它们是“有计划的”“太长了,读不下去了。”我已经找到了所有简短和简单的问题的答案……没有一个字留下来。也许有人会读……没有压力。我觉得这里有一些独立的问题,也许你可以把它们分开。“Dyp……不知道怎么,他们一起工作。有JUS。T 2个问题。一个关于非标准的构造函数继承和模板类方法内联。我把它们放在一起,这样我就不会被一些版主驳回的问题,TL;Dr.…但是看到标题并认为它是一个DUPE。“把模板化的函数嵌入到内联文件中肯定是一个正式的地狱。”您是否尝试过重构工具?为什么还要将定义与声明分开?可读性?(注意:Java..)“太长了,读不下去了?”我已经找到了所有简短和简单的问题的答案……没有一个字留下来。也许有人会读……没有压力。我觉得这里有一些独立的问题,也许你可以把它们分开?“迪普……不知道怎么,他们一起工作。只有2个。问题。一个关于非标准的构造函数继承和模板类方法内联。我把它们放在一起,这样我就不会被一些版主驳回的问题,TL;博士。但是看到标题并认为它是一个DUPE。“把模板化的函数嵌入到内联文件中肯定是一个正式的地狱。”您是否尝试过重构工具?为什么还要将定义与声明分开?可读性?(注意:Java..)PS:VS2012已经支持CTP2012中的链式构造函数。PS:VS2012已经支持CTP2012中的链式构造函数。(facepalm)我看到大量的
构造函数
继承工作计划在我的未来!:)需要重新考虑我的策略并创建构造函数方法。这可以是
静态的
并生成可移动的对象实例,也可以是对象的实际的
方法
,至少它们带来了
自动lambda参数这是2013年11月CTP中详细介绍的内容(facepalm)。我看到大量的
构造函数
继承工作计划用于我的未来!:)需要