簡體   English   中英

沒有合適的默認構造函數

[英]No appropriate default constructor available

我正在嘗試對不帶任何參數的'Control'類使用構造函數,但是當我嘗試創建它的實例時,出現錯誤消息:“沒有合適的默認構造函數可用”

這是我的標題:

class Control
{
public:
    Control();

private:
    Layout activeLayout;

    void createLayout();
    void moveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight,           std::string windowTitle);
    void mainLoop();
};

#endif

我的cpp文件:

 Control::Control()
{
    Detector mainDetector();

    createLayout();
    mainLoop();
}

以及我試圖打電話給老師的地方:

int _tmain(int argc, _TCHAR* argv[])
{
    Control mainControl();

    system("PAUSE");

    return 0;
};

注意

Detector mainDetector();

是一個函數聲明,而不是Control類型的變量的定義。 沒有參數時,語法為

Detector mainDetector;

在某些情況下,即使在似乎不可能的情況下,也可以推斷局部函數的聲明...這被稱為C ++的“ 最令人煩惱的解析 ”規則。

一個簡單的例子是:

double pi = 3.141592654;
int int_pi(int(pi));

令人驚訝的是,這里將int_pi聲明為一個函數!

更改

 Control mainControl();

 Control mainControl;

這應該解決問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM