Главная страница
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.042 c
15-1168946847
Nic (from SAF)
2007-01-16 14:27
2007.02.04
Пропал элемент меню: Project -> Information for Project :(


15-1168412476
Rouse_
2007-01-10 10:01
2007.02.04
Хех, Твой ник по японски :)


3-1163276025
_Ламер_
2006-11-11 23:13
2007.02.04
FROM .... JOIN .... = не догоняю


2-1169040951
InfraRed
2007-01-17 16:35
2007.02.04
Функция RegConnectRegistry


8-1150105159
valent
2006-06-12 13:39
2007.02.04
Повернуть Изображение в TImage