MyDialog
サブクラス化するクラスがQDialog
あり、それ自体がサブクラス化しQWidget
ます。したがって、次のようになります。
QObject
|
V
QWidget
|
V
QDialog
|
V
MyDialog
クラスMyDialog
には static メソッドがあります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()
なんで?