使用 Qt 在 C++ 中委派 class 构造函数

Delegating class constructors in C++ using Qt

我尝试使用 C++ 在 Qt 5.4.0 中委托一个 class 构造函数。有问题的代码如下所示:

//.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。这个不支持吗?如果是这样,是什么导致了这个错误?

构造函数委托是一项 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