Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Call super anti-pattern in HapcanDeviceSubModuleHost #30

Open
mariusz-n opened this issue Apr 20, 2020 · 2 comments
Open

Call super anti-pattern in HapcanDeviceSubModuleHost #30

mariusz-n opened this issue Apr 20, 2020 · 2 comments

Comments

@mariusz-n
Copy link
Contributor

Call super
Wszystkie metody wirtualne muszą być wywołane z klasy wyprowadzonej. Jeśli się tego nie zrobi, dzieją się złe rzeczy, np. sub-moduły nie zostają zainicjalizowane.
Przydałoby się to zrobić inaczej, bezpieczniej.

@Onixarts
Copy link
Owner

Akurat tutaj wirtualne metody w klasie bazowej są puste i raczej nic w nich nie będzie, bo ich przeznaczeniem jest przeciążanie w klasie potomnej. Więc niewywołanie ich nie jest groźne i nie popsuje niczego. Gdy zajdzie taka potrzeba to wywołanie się doda. A jesli ktoś będzie przeciążał metody z HapcanDeviceSubModuleHost to jak najbardziej musi pamiętać o wywołaniu supera. No chyba, że ma inny pomysł na działanie tych metod :).

@mariusz-n
Copy link
Contributor Author

Jeśli są puste w klasie bazowej, to dlaczego trzeba wywołać supera?

A może nie mówimy o tej samej klasie, bo metody wirtualne klasy HapcanDeviceSubModuleHost nie są puste. Przykład:

virtual void OnInit()
{
    for (byte i = 0; i < SubmodulesCount; i++)
    {
        m_subModules[i]->Init();
    }
}

Jeśli czytałeś podanego linka, to wiesz, że to jest problem, a opisałem go, bo sam na niego trafiłem,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants