Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Скрыть public-метод в наследнике.


Страницы:   1 2 3 4

Alexander Panov ©   (2005-05-30 20:10:00) 

Как можно скрыть public-метод в наследнике класса?
К примеру, TStringList имеет 2 метода - Add и AddObject.
Как сделать невидимым для наследника метод Add?


Alexander Panov   (2005-05-30 23:11:00) [41]

Anatoly Podgoretsky ©   (30.05.05 23:06) [32]
Кратко опишу задачу:

Наследник от TStrinList используется для хранения списков объектов.

В наследнике объекты можно добавлять только методом AddObject(тоже переписанным).


Anatoly Podgoretsky   (2005-05-30 23:06:00) [42]

Все таки так и осталось не понятным почему именно хочешь скрыть, ведь вполне достаточно изменить поведение, только надо учитывать и другие методы, например этот метод вызывает Insert который у предка как раз абстрактный, в отличии от Add, также еще есть и ряд других аналогичных методов.

Может надо подумать над перепроектированием? Что то хдесь не то, раз такое потребовалось.


Alexander Panov   (2005-05-30 22:59:00) [43]

Anatoly Podgoretsky ©   (30.05.05 22:56) [30]

Да, увы мне-)


Anatoly Podgoretsky   (2005-05-30 22:56:00) [44]

Ну спрятать невозможно по определению, можно начать новую цепочку наследования.


Alexander Panov   (2005-05-30 22:53:00) [45]

Ну что же, спасибо всем.
Похоже, что фокус не удастся.
---------
PS.
Гаврила ©   (30.05.05 22:43) [23]
1 кто будет пользоваться классом - потомком - ты или не ты?


Пользоваться буду я. Но ведь не надо зарекаться-)


Alexander Panov   (2005-05-30 22:51:00) [46]

К сожаленю, я ошибся - спрятать метод все равно не удалось.
Это возможно только при условии вынесения предка в другой модуль, как я понял.


Anatoly Podgoretsky   (2005-05-30 22:50:00) [47]

Alexander Panov ©   (30.05.05 22:42) [22]
Появится в Д7, там это уже не безопасные типы, из-за .NET.


Anatoly Podgoretsky   (2005-05-30 22:48:00) [48]

Гаврила ©   (30.05.05 22:43) [23]
function Add(const S: string): Integer; override;
У предка
function Add(const S: string): Integer; virtual;


Defunct   (2005-05-30 22:46:00) [49]

Alexander Panov ©   (30.05.05 22:42) [22]

Простите, Warning а не Hint в D7 звучит так:

1 - "Unsafe type PChar"
2 и 3 - "Unsafe type Pointer"


Гаврила   (2005-05-30 22:46:00) [50]

Если взять именно этот пример (Add, AddObject), то лучше наверно сделать так: переписать метод Add в секции паблик, но добавиьт параметр (сделать так же, как и в AddObject) (если например в стринг листе не должно оказаться итемов без обжектов)


Гаврила   (2005-05-30 22:43:00) [51]

Саш, хинт - не проблема, его можно погасить соответствующей директивой
{$HINTS OFF}
Я не совсем пойму - зачем это надо
2 Вопроса
1 кто будет пользоваться классом - потомком - ты или не ты?
2. метод статический или виртуальнй?


Alexander Panov   (2005-05-30 22:42:00) [52]

Defunct ©   (30.05.05 22:40) [21]
Странно, у меня нет хинта ни в одном из 3-х примеров.
(D6)


Defunct   (2005-05-30 22:40:00) [53]

Alexander Panov ©   (30.05.05 22:21) [20]

const
  Someconst : PChar = 'А вот и хинт';

type
    TSomerecord = Record
      Addr    : Pointer;  // А вот и второй хинт
      ...
    End;

    Someproc = Procedure(Addr:Pointer); // третий хинт

Могу привести еще


Alexander Panov   (2005-05-30 22:21:00) [54]

Defunct ©   (30.05.05 22:09) [19]
Приведи пример, в которм хинты выдаются?


Defunct   (2005-05-30 22:09:00) [55]

Alexander Panov ©   (30.05.05 21:49) [18]

А как же ж удается используя Pointer и PChar избегать всех hint'ов?


Alexander Panov   (2005-05-30 21:49:00) [56]

Defunct ©   (30.05.05 21:46) [17]

Использую, конечно.


Defunct   (2005-05-30 21:46:00) [57]

Alexander Panov ©   (30.05.05 21:44) [16]

Ясно, значит дело принципа ;>
и Pointer вы никогда не используете и PChar?


Alexander Panov   (2005-05-30 21:44:00) [58]

Defunct ©   (30.05.05 21:41) [14]
Ой ли, а не пофигу на тот хинт?

BFG9k ©   (30.05.05 21:43) [15]
Дался тебе этот хинт. Хинты - обычное дело. Например при любом использовании PChar дельфи ругается - unsafe type. У нас своя голова за плечами :)


У меня перед релизом не остается хинтов в программе.


BFG9k   (2005-05-30 21:43:00) [59]


> В принципе, если перенести метод в private-секцию, как заглушку
> и использовать при вызове, например, конструктора, то хинт
> выдаваться не будет


Дался тебе этот хинт. Хинты - обычное дело. Например при любом использовании PChar дельфи ругается - unsafe type. У нас своя голова за плечами :)


Defunct   (2005-05-30 21:41:00) [60]

Извиняюсь за возможную грубость.

> В этом случае цель достигается, но получаем хинт
Ой ли, а не пофигу на тот хинт?


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо