![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запутался с дерективами видимости.
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. Но почему сама среда это не учла? Или я не прав?