4

我正在尝试在 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
}

我得到的错误是:

错误 C2437:“ErrorReportDlg”:已初始化

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

4

1 回答 1

6

根据MSDN,VS 2012 不支持开箱即用的委派构造函数。

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

于 2013-09-20T10:36:02.683 回答