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 に答える