我试图在Visual Studio 2012中使用委派构造函数。以下代码在Xcode 4.6中编译,但在Visual Studio 2012中不编译:

在.h文件中

class ErrorReportDlg : public QDialog
{

public:
    ErrorReportDlg(OwlExceptionPtr ex, QWidget *parent);
    ErrorReportDlg(QWidget *parent);

    virtual ~ErrorReportDlg();
}

在.cpp文件中
// FWIW, OwlExceptionPtr is
// typdef boost::shared_ptr<OwlException> OwlExceptionPtr

ErrorReportDlg::ErrorReportDlg(OwlExceptionPtr ex, QWidget *parent)
    : QDialog(parent),
    _error(ex)
{
    // stuff
}

ErrorReportDlg::ErrorReportDlg(QWidget *parent)
    : ErrorReportDlg(OwlExceptionPtr(), parent) // <--- error here
{
    // do nothing
}

我得到的错误是:



我究竟做错了什么?谢谢!

最佳答案

根据MSDN,VS 2012不支持立即使用委托(delegate)的构造函数。

在安装November 2012 CTP(编译器技术预览)时,您将获得委派的构造函数(以及许多其他C++ 11功能)。安装之后,切换项目以使用CTP作为其工具集(通过Project properties),就可以设置好了。

10-05 23:48