【发布时间】:2017-02-05 23:40:21
【问题描述】:
我们有这个基类:
TCustomContextOpenGL = class(TContext3D)
protected
**class** procedure CreateSharedContext; virtual; abstract;
end;
并在程序中知道我们所做的当前上下文类:
TContextManager.DefaultContextClass => return TContextClass = class of TContext3D;
这将例如返回 TCustomAndroidContext 或 TCustomContextIOS 覆盖 CreateSharedContext 但让它受到保护
我的问题是我需要做的
TContextManager.DefaultContextClass.CreateSharedContext
但这当然行不通,因为 CreateSharedContext 在 TCustomContextOpenGL 中受到保护 :( 我该怎么办?
【问题讨论】:
-
@AndreiGalatyn 不太一样,因为我在这里说的是类而不是对象:(
-
这看起来更像 C++ 而不是 Delphi。在回答您的问题时,您不能将其保留为受保护并访问它 - 这就是受保护的目的!因此,不要让它受到保护,而是将覆盖公开。基类仍然不能直接访问,但子类可以。
-
你不能用
RegisterContextClasses和UnRegisterContextClasses -
是的,我可以,但是对于我想要做的单行代码使用 registerContextClasses / UnRegisterContextClasses 看起来过于复杂:( 最后我最终使用 {$ifdef android} ....{$否则 ifdef ios}....
标签: delphi firemonkey