если не тяжело, покажите подалуйста простейший пример с использованием static-члена.
заранее благодарен
static-член
Модератор: Модераторы
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
А мне вот тоже интересно, вроде fpc поддерживает статик, а в руководстве о нем не слова.
метод тыка не принес результата:
спотыкается на t.sayhello;
Only class methods can be referred with class referrences
Сдается мне, что в fpc нет нормального статика (в том виде как в С++), под статиком понимается обычный невиртуальный/нединамический метод...
метод тыка не принес результата:
Код: Выделить всё
type
t = class
procedure sayhello; static;
end;
procedure t.sayhello;
begin
writeln('hello world');
end;
begin
t.sayhello;
end.спотыкается на t.sayhello;
Only class methods can be referred with class referrences
Сдается мне, что в fpc нет нормального статика (в том виде как в С++), под статиком понимается обычный невиртуальный/нединамический метод...
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Сказано, то сказано,
но это будет не статик-функция (как С++), а класс-функция - отличие в одном неявно передаваемом параметре Self:
но это будет не статик-функция (как С++), а класс-функция - отличие в одном неявно передаваемом параметре Self:
Код: Выделить всё
{$mode objfpc}
type
fooclass = class of foo;
foo = class
public
class procedure sayhello; virtual;
end;
bar = class (foo)
end;
banana = class (bar)
public
class procedure sayhello; override;
end;
class procedure foo.sayhello;
begin
writeln(Self.ClassName, ' says hello');
end;
class procedure banana.sayhello;
begin
writeln(Self.ClassName, ' does not says hello');
end;
procedure hello(AClass: fooclass);
begin
AClass.sayhello;
end;
begin
hello(foo);
hello(bar);
hello(banana);
end.-
Replicator
- постоялец
- Сообщения: 154
- Зарегистрирован: 30.04.2006 17:14:45
- Откуда: Outer Heaven
- Контактная информация:
