Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.04;
Скачать: CL | DM;

Вниз

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

 
Kolan ©   (2006-12-13 10:52) [0]

Есть простой класс и интерфейс:
 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 10:57) [1]

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


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

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


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


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


Это как ?


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


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


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


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


> Это как ?


Упс..

Это я загнул)


> Kolan


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


 
Eraser ©   (2006-12-13 18:26) [6]

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

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


 
Kolan ©   (2006-12-13 18:31) [7]

> public

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


 
Kolan ©   (2006-12-13 18:35) [8]

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

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



Страницы: 1 вся ветка

Текущий архив: 2007.02.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
15-1168889829
The X
2007-01-15 22:37
2007.02.04
Корректное отображение кириллицы в названиях разделов в CHMхелпах


4-1158738392
Petrovitch
2006-09-20 11:46
2007.02.04
Доступ к ресурсу (диску)?


6-1156835616
DVM
2006-08-29 11:13
2007.02.04
Потокобезопасность connect(), socket(), select() и прочее


15-1168733277
_silver
2007-01-14 03:07
2007.02.04
Планируется новая версия CDM


15-1168833783
Slider007
2007-01-15 07:03
2007.02.04
С днем рождения ! 15 января