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

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

Запутался с дерективами видимости.


Kolan ©   (2006-12-13 10:52:00) 

Есть простой класс и интерфейс:
 IRange = interface
   function GetLeftAge: Double;
   procedure SetLeftAge(const Value: Double);
   function GetRightAge: Double;
   procedure SetRightAge(const Value: Double);
   function GetStep: Double;
   procedure SetStep(const Value: Double);
   property LeftAge: Double read GetLeftAge write SetLeftAge;
   property RightAge: Double read GetRightAge write SetRightAge;
   property Step: Double read GetStep write SetStep;
 end;

 TRange = class(TInterfacedObject, IRange)
 strict private
   FLeftAge: Double;
   FRightAge: Double;
   FStep: Double;
   function GetLeftAge: Double;
   procedure SetLeftAge(const Value: Double);
   function GetRightAge: Double;
   procedure SetRightAge(const Value: Double);
   function GetStep: Double;
   procedure SetStep(const Value: Double);
 public
   property LeftAge: Double read GetLeftAge write SetLeftAge;
   property RightAge: Double read GetRightAge write SetRightAge;
   property Step: Double read GetStep write SetStep;
 end;


Тк в классе процедуры доступа Set Get строго прайвэт, то он ругается что мол
[Pascal Error] KAmplifierAnalyzerSensitivityAnalyzer.pas(34): E2003 Undeclared identifier: 'GetRightAge'

А если их убрать из интерфейса, то ессно в интерфейсе он не знает что такое Get Set. Что делать?

ЗЫ
 Главное сам почти ниче не писал. Все автоматом....


Kolan   (2006-12-13 18:35:00) [1]

> секцию public сам помещает

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


Kolan   (2006-12-13 18:31:00) [2]

> public

Дало в том, что я писал св-ва а методы он сгенерил сам. и сам их поместил в строго прайват. Интерфейс извлек тоже не руками, а рефакторингом....


Eraser   (2006-12-13 18:26:00) [3]

> [1] Kolan ©   (13.12.06 10:57)

а почему бы не объявить эти методы public, по аналогии с C# (на там это для других целей), может кому-то удобнее напрямую методы вызывать, чем обращаться к свойствам.


Сергей М.   (2006-12-13 14:02:00) [4]


> Это как ?


Упс..

Это я загнул)


> Kolan


Реализации интерфейсных методов перенеси в protected


Игорь Шевченко   (2006-12-13 13:25:00) [5]


> Есть простой класс и интерфейс:


Странно. А у меня он методы интерфейса в секцию public сам помещает


Игорь Шевченко   (2006-12-13 13:20:00) [6]


> Не нужны они там совершенно - доступ к ним осуществляется
> через соотв. св-ва интерфейса.


Это как ?


Сергей М.   (2006-12-13 12:04:00) [7]

Зачем в интерфейсе объявлены Get/Set-методы ?
Не нужны они там совершенно - доступ к ним осуществляется через соотв. св-ва интерфейса.


Kolan   (2006-12-13 10:57:00) [8]

Решение я понятно знаю - объявить методы просто private. Но почему сама среда это не учла? Или я не прав?


Наверх

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