[英]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.