没有合适的默认构造函数

时间:2016-01-17 07:37:51

标签: c++ class parameters constructor syntax-error

我试图使用构造函数来控制'不带参数的类但是当我尝试创建它的实例时,我得到一个错误说"没有合适的默认构造函数"

这是我的标题:

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

2 个答案:

答案 0 :(得分:3)

注意

Detector mainDetector();

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

Detector mainDetector;

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

一个简单的例子是:

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

令人惊讶的是,int_pi被宣布为一个函数!

答案 1 :(得分:1)

更改

 Control mainControl();

 Control mainControl;

这应解决问题