我看一段 Java 代码,我想看看它是如何在 C++ 中实现的:
public interface IThing {
public void method1();
// more (virtual methods)
}
public interface IThingFactory {
public IThing getThing(ThingType thing);
}
public interface IFactory<T> {
public T createInstance();
}
public class A {
A(ThingType thingType, IFactory<IThing> thingFactory, ...) {
// ...
}
static A create(ThingType thingType, final IThingFactory thingFactory) {
return new A(new IFactory<IThing>() {
{
public IThing createInstance()
{
return thingFactory.getThing(thingType);
}
}, new IFactory< ... >()
{
public IAnother createInstance()
{
return anotherFactory.getAnother(anotherType);
}
});
}
// ...
}
我希望上面的代码(不完整)说明了我试图找出的内容。我的问题是如何在 C++ 中完成。主要是我不明白构造函数调用createInstance
里面的实现A
(在我看来还是不完整的),比如匿名函数实现。我看不到如何createInstance
在 C++ 中以某种方式实现该方法,以便IFactory<IThing>
定义(抽象)类型的对象,因为通过这种方式,(虚拟)方法createInstance
仍然是纯的。或者可以用某种 lambda 函数来完成吗?
有人可以告诉我如何用 C++ 编码吗?谢谢(你的)信息!