2013-04-16 2 views
0

У меня есть интерфейс под названием ILoader. Это относится к типу объекта, который загружает файлы ресурсов.Интерфейсы FreePascal: функция, которая вернет «ничего»

ILoader = interface 
    function Load: TObject; 
    function FormatName: String; 
    end; 

Довольно просто. Теперь, я хочу иметь несколько типов Loader, тем TSurfaceLoader, TSoundLoader, TMusicLoader и т.д.

Проблема, как я указываю в interface, что возвращаться из функций? SurfaceLoader загрузит Surfaces, но Surface не является TObject, поэтому он не будет работать.

Что мне делать? Просто соедините интерфейс все вместе? (Я, вероятно, буду расширять его, это не всегда будет так мало.)

+0

A Поверхность не является TObject? Тогда что это? –

+0

@Robkennnedy Это запись, я думаю. –

ответ

0

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

Решение было бы просто типаж:

something_of_tsurfaceloader:=TSurfaceLoader(myILoaderIntf.GetObject); 

Проектирование из интерфейса может быть лучше или нет, это зависит от многого. Эти ежедневные выборы делают жизнь программистом интересной :)

Смежные вопросы