Форум: "Основная";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];
ВнизЗапутался с дерективами видимости. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.077 c