我试图使用构造函数来控制'不带参数的类但是当我尝试创建它的实例时,我得到一个错误说"没有合适的默认构造函数"
这是我的标题:
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;
};
答案 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;
这应解决问题