|
|
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
Есть два класса Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. На второй метод компилятор выдает ворнинг [dcc32 Warning]W1010 Method 'Test' hides virtual method of base type 'TBase' Есть какой-то цивилизованный способ подавить ворнинг кроме Код: pascal 1. На такой класс Код: pascal 1. 2. 3. 4. 5. на выделенной строке тот же ворнинг С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 19:11:13 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
Нашел такой способ Код: pascal 1. 2. 3. 4. насколько это кошерно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 19:12:49 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, прикалываешься? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 19:14:23 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
Просто базовый пометь как overload: Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 19:15:36 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
чччДприкалываешься?Не ЛисьПросто базовый пометь как overload:Вариант, конечно. Но как бы базовый метод не обязан знать, что его будут перегружать в наследнике ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 19:29:35 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_насколько это кошерно? Ну эта директива просто подтверждает компилятору, что вы знаете что делаете, и точно так же тупо давит предупреждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 20:24:15 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Нашел такой способ Код: pascal 1. 2. 3. 4. насколько это кошерно? Абсолютно кошерно. Когда надо в наследнике Tcomponent применить конструктор с аргументами, отличающимися от стандартного Create (AOwner: TComponent) слово reintroduce пишется на автомате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 21:14:32 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
Только overload после reintroduce не надо писать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 21:16:24 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
schiТолько overload после reintroduce не надо писатьМне нужно именно overload. Т.е. в наследнике я хочу видеть два перегруженных метода. Один виртуальный из родителя (быть может переопределенный в наследнике), а второй невиртуальный из наследника ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 15:31:24 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. В 7ке нормально работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 16:11:12 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Вариант, конечно. Но как бы базовый метод не обязан знать, что его будут перегружать в наследнике Как бы компилятор обязан знать, какие методы будут перегружать. Иначе потребуются извращения и хаки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 16:12:44 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_schiТолько overload после reintroduce не надо писатьМне нужно именно overload. Т.е. в наследнике я хочу видеть два перегруженных метода. Один виртуальный из родителя (быть может переопределенный в наследнике), а второй невиртуальный из наследника Я бы у второго (невиртуального в наследнике) поменял имя и не парился бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 18:05:34 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. вот так надо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 21:54:53 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
Уважаемый авторвот так надо!Так не надо [dcc32 Error]E2037 Declaration of 'Test' differs from previous declaration ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 21:29:47 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Нашел такой способ Код: pascal 1. 2. 3. 4. насколько это кошерно? Грустно.... Когда задают такие вопросы... особенно опытные... на собеседовании я бы закончил разговор. Из справки helpAn override declaration must match the ancestor declaration in the order and type of its parameters and in its result type (if any). helpUse reintroduce when you want to hide an inherited virtual method with a new one Если вы хотите чтобы 2 метода объявленные в разных классах, один из которых наследник второго, были видны другим наследникам, то оба метода объявляете override. Если вы хотите, чтобы эти методы могли изменять в наследниках, то добавляете еще virtual. Если вы хотите для последующих наследников скрыть базовую реализацию в базовом классе и оставить видимой последнюю, то используете reintroduce Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Цель то какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 22:10:45 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
Насколько я понял Test4 же ваш случай? Вот так и будет кошерно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 22:18:18 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
X-CiteЕсли вы хотите чтобы 2 метода объявленные в разных классах, один из которых наследник второго, были видны другим наследникам, то оба метода объявляете override.Дальше можно не читать. Нельзя указать override для невиртуального метода X-CiteЕсли вы хотите для последующих наследников скрыть базовую реализацию в базовом классе и оставить видимой последнюю, то используете reintroduceВы удивитесь, но reintroduce overload работает именно так как мне нужно. Видны два перегруженных метода один из которых виртуальный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 00:55:22 |
|
||
|
Перегрузка виртуального метода
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Вы удивитесь, но reintroduce overload работает именно так как мне нужно. Видны два перегруженных метода один из которых виртуальный да, меня это тоже удивляло - две как бы противоположные по смыслу директивы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 19:10:55 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=125&tid=2041530]: |
0ms |
get settings: |
10ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 432ms |

| 0 / 0 |
