没有合适的默认构造函数可用
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
被声明为一个函数!
我正在尝试使用不带参数的 '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
被声明为一个函数!