Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
15-1168607123
DVM
2007-01-12 16:05
2007.02.04
Как вам такой админ. Говорят правда.


6-1156932781
BFG9k
2006-08-30 14:13
2007.02.04
Генерирование изображений с помощью IdHTTPServer


3-1163428832
Shorokhov
2006-11-13 17:40
2007.02.04
Запретить удаление записи в триггере


6-1156805841
ZLOFENIX
2006-08-29 02:57
2007.02.04
Socks5 прокси


2-1168962315
Megabyte
2007-01-16 18:45
2007.02.04
Определить текущую директорию в консольном приложении





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский