没有合适的默认构造函数可用

No appropriate default constructor available

我正在尝试使用不带参数的 'Control' class 的构造函数,但是当我尝试创建它的实例时,我收到一条错误消息 "No appropriate default constructor available"

这是我的 header:

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;
};

改变

 Control mainControl();

 Control mainControl;

这应该可以解决问题

注意

Detector mainDetector();

是函数声明,不是Control类型变量的定义。 当没有参数时语法是

Detector mainDetector;

在某些情况下,局部函数的声明会被推断出来,即使它看起来不可能......这被称为 C++ 的“the most vexing parse”规则。

一个简单的例子是:

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

令人惊奇的是这里 int_pi 被声明为一个函数!