[英]in constructor, no matching function call to
我的错误
gridlist.h: In constructor ‘GridList::GridList(WINDOW*, int, int, int, int, int)’:
gridlist.h:11:47: error: no matching function for call to ‘Window::Window()’
gridlist.h:11:47: note: candidates are:
window.h:13:3: note: Window::Window(WINDOW*, int, int, int, int, int)
我的密码
GridList(WINDOW *parent = stdscr, int colors = MAG_WHITE, int height = GRIDLIST_HEIGHT, int width = GRIDLIST_WIDTH, int y = 0, int x = 0)
: Window(parent, colors, height, width, y, x) {
this->m_buttonCount = -1;
m_maxButtonsPerRow = ((GRIDLIST_WIDTH)/(BUTTON_WIDTH+BUTTON_SPACE_BETWEEN));
this->m_buttons = new Button *[50];
refresh();
}
我不确定它到底想告诉我什么,我做错了什么。 我将正确的变量类型传递给类和正确数量的参数。 但是它说我试图不带参数调用Window::Window()
。 在此先感谢您的帮助。
Button类可以很好地编译,并且几乎完全相同。
Button(WINDOW *parent = 0, int colors = STD_SCR, int height = BUTTON_WIDTH, int width = BUTTON_HEIGHT, int y = 0, int x = 0)
: Window(parent, colors, height, width, y, x) {
this->refresh();
}
您的GridList
类具有类型为Window
的成员变量。 由于所有成员(如果未指定,则默认为默认值)在构造函数的主体之前初始化,因此实际上您的样子类似于此:
GridList::GridList (...)
: Window(...), m_tendMenu() //<--here's the problem you can't see
您的成员变量正在默认初始化,但是您的Window
类没有默认构造函数,因此出现了问题。 要解决此问题,请在成员初始化程序中初始化您的成员变量:
GridList::GridList (...)
: Window(...), m_tendMenu(more ...), //other members would be good here, too
您的Button
类起作用的原因是因为它没有Window
类型的成员,因此,在不能使用时,不会对其进行默认初始化。
为什么只在初始化器列表中调用构造函数? 通常,您在那儿初始化成员变量,所以那里会有window类型的成员变量。
GridList(WINDOW *parent = stdscr, int colors = MAG_WHITE,
int height = GRIDLIST_HEIGHT, int width = GRIDLIST_WIDTH, int y = 0, int x = 0)
: m_window(parent, colors, height, width, y, x) { }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.