![]() |
1
7
告诉编译器生成
听起来您想使用工厂模式,即在
在某种程度上,您必须实例化一个非抽象的子类;没有办法指定
|
![]() |
2
2
你似乎对你想要什么有点困惑;你必须在某个阶段告诉计算机它要使用的实用程序的实现,但是根据你设定的形状,你只需要
一旦进入程序,大多数源文件就可以调用u的方法,而不知道它是什么类型的u——我认为这就是你的目标。 |
![]() |
3
2
在C++中,你不能实例化抽象类,这正是你在这里试图做的:
我很不清楚你为什么要实例化这样一个类,如果你能这样做(你不能这样做),你会用它做什么。不能将实例化用作接口-类定义提供了这一点。 |
![]() |
4
2
你要把它“弄好”,你必须实例化一个具体的类型。有一些共同的解决办法。
是的,您必须决定在某个地方实例化哪个类。
在您提到具体的类之前,可以在编译时做出决定,类似于Tom的建议。
第二,
注意
对于延迟施工,使用工厂。
如果像上面那样注入实用程序类,创建起来很昂贵,但大多数时候不需要,那么您应该注入一个工厂:通过
如果这是一个常见的问题 看 Inversion of Control (IOC)-有几个库实现可以简化这一过程。在激烈的单元测试之后,它已经成为一个时髦的词,在那里用mock替换“真正的”实现必须永久发生。(不过,我仍在等待一个完整的模拟模型)。但是,我还没有开发过任何一个在实践中非常需要suhc库的应用程序,这很可能会对您的问题造成严重的破坏。 |
![]() |
timurichk · 我的类不重写抽象方法compareTo 7 年前 |
![]() |
Steffn · angular 4中抽象类的动态多提供程序 7 年前 |
![]() |
Fabio Piunti · Abstract类子类的调用方法 7 年前 |
![]() |
Sunny Deshmukh · 可以从Java中的多个抽象类继承吗? 7 年前 |
![]() |
Felix · 初始化抽象类的一般变量 7 年前 |
![]() |
wheeeee · Scala对象扩展了抽象类/特征,访问伴随类字段 7 年前 |