我有一个子类MyDialog
的类QDialog
,它本身就是子类QWidget
。所以它看起来像这样:
QObject
|
V
QWidget
|
V
QDialog
|
V
MyDialog
该类MyDialog
有一个静态方法static bool isVisible( MyObject *myObject )
。它还从它的父级继承了一个实例方法:QWidget::isVisible()
在 MyDialog.h 中:
class MyDialog : public QDialog
{
static bool isVisible( MyObject *myObject );
MyDialog *getInstance( MyObject *myObject );
// other methods
};
在 MyDialog.cpp 中:
bool MyDialog::isVisible( MyObject *myObject )
{
// This intended call to QWidget::isVisible() won't compile
return MyDialog::getInstance( myObject )->isVisible()
}
这无法编译并出现以下错误:
src/MyDialog.cxx: In static member function ‘static bool MyDialog::isVisible(MyObject*)’:
src/MyDialog.cxx:67:57: error: no matching function for call to ‘MyDialog::isVisible()’
src/MyDialog.cxx:67:57: note: candidate is:
src/MyDialog.cxx:62:6: note: static bool MyDialog::isVisible(Equipment*)
src/MyDialog.cxx:62:6: note: candidate expects 1 argument, 0 provided
它似乎试图调用我的静态方法,而不是与签名匹配的MyDialog::isVisible( MyObject * )
继承。QWidget::isVisible()
为什么?