Я не знаю, как суммировать мой вопрос, поэтому не могу найти ответ в Google.
При переопределении родительского метода,
void Child::method(){
//stuff
Parent::method();
}
Работает отлично.Но родительский метод требует, чтобы информация из экземпляра класса Child работала должным образом, а это не аргументыПоэтому мой вопрос: есть ли в C ++ механизм, позволяющий Parent узнать, какой экземпляр класса Child вызывает метод Parent, например, без выполнения Parent::method(this)
?
То, что заставляет менядумаю, что если вы сделаете что-то подобное,
int main(){
SomeParentClass::someMethod();
}
Это даст: error: вызов нестатической функции-члена без аргумента объекта. Таким образом, компилятору необходимо знатьэкземпляр, который также не был дан в дочернем классе.Но не выдало ошибку, поэтому он должен был знать экземпляр.
Редактировать: Я добавил тег Qt, потому что я экспериментирую с классом Qt.Чтобы я мог привести пример, если это необходимо.
Edit2:
devicedialog.h
class DeviceDialog : public QDialog
{
Q_OBJECT
public:
explicit DeviceDialog(QWidget *parent = nullptr);
int exec() override;
~DeviceDialog() override;
}
devicedialog.cpp
int DeviceDialog::exec(){
// My code.
return QDialog::exec();
}
exec()
Функция активируется и показывает QDialog на экране.Однако при таком способе его вызова кажется, что у родительского метода нет способа узнать, какой диалог показывать (параметры не переданы).Единственным знанием может быть личность вызывающего его экземпляра.Я просто спрашиваю, передаются ли эти знания методу в фоновом режиме.