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

时间:2015-08-06 08:52:08

标签: c++ qt class c++11 delegation

我尝试使用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。这不支持吗?如果是,导致此错误的原因是什么?

1 个答案:

答案 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