我尝试使用C ++在Qt 5.4.0中委托一个类构造函数。有问题的代码如下:
//.h
class A : public QObject
{
public:
A(QObject *parent = 0) : A(10, parent) {}; <--COMPILER ERROR
A(int x, QObject *parent = 0);
...
};
//.cpp
A::A(int x, QObject *parent) : QObject(parent)
{
do_something();
}
编译器声称元素初始化'A'既不是Basis也不是Element。这不支持吗?如果是,导致此错误的原因是什么?
答案 0 :(得分:2)
构造函数委派是所有编译器都不支持的C ++ 11功能。如果您使用的是Visual Studio编译器(或旧的GCC),它可能无法正常工作。
请参阅此问题,并提供答案,说明在VS2012中甚至不完全支持它:Is there a way to use delegating constructors in Visual Studio 2012?
供参考,在这里您可以找到相应MSVC版本支持的所有功能(MSVC11不支持委托构造函数):https://msdn.microsoft.com/en-us/library/hh567368.aspx