2014-04-12 84 views
0

我有一個名爲MainWindow而沒有默認構造函數的類。我有一個名爲Application的類,它的構造函數使用MainWindow的一個實例作爲參數。我得到一個C++錯誤C2512:沒有適當的默認構造函數可用

Error C2512, "no appropriate default constructor available" 

從class Application中定義構造函數。

這裏的構造函數的代碼:

Application::Application(HINSTANCE hInstance, MainWindow mainWindow) {...} 

我創建的Application這樣的實例:

MainWindow window(1000, 1000, false, "test"); 
Application program(Instance, window); 

爲什麼我得到這個錯誤?我沒有試圖用默認的構造函數創建一個MainWindow的新實例。

+0

是否'Application'有'MainWindow'數據成員

申請::應用?如果是這樣,那麼你會默認構造它。 – juanchopanza

+0

如何創建應用程序對象?發佈代碼 –

回答

1

看來,類應用程序有一個類型爲MainWindow的數據成員,無法創建。否則,目前還不清楚爲什麼類Application的構造函數具有參數MainWindow mainWindow。我認爲它被用來將它分配給類的數據成員。

您可以使用ctor初始值設定項。例如,如果類應用確實有型主窗口的數據成員(我們將其命名爲m_window),那麼你可以寫構造通過以下方式

Application::Application(HINSTANCE hInstance, MainWindow mainWindow) : m_window(mainWindow) 
{ 
    //... 
} 
0

如果問題是沒有一個主窗口類成員,那麼你的應用程序類有一個構造函數,它通過值獲取MainWindow參數。爲了做到這一點,它必須創建一個窗口的副本,如果你沒有複製構造函數,編譯器可能會尋找一些方法來創建這個副本。嘗試:(HINSTANCE的hInstance,主窗口&主窗口){...}

相關問題