我在Java
中实现了一个小Factory class
。它的最小版本看起来像这样:C++中的工厂模式。实例化问题
interface MyClass{
public void doSomething();
}
class Concrete_1 implements MyClass{
private String field_1;
Concrete_1(String _field_1){
// ... initialization
}
public void doSomething(){
// ... not so important
}
}
class MyClassFactory{
public static MyClass init(int idx, String val){
Concrete_1 ex = null;
switch(idx){
case 1:
ex = new Concrete_1(val);
break;
default:
break;
}
return ex;
}
public static void main(String args[]){
MyClass ex = MyClassFactory.init(1, "value"); // <-- I like that
}
}
我喜欢它的工作方式,尤其是这样,我怎么可以实例特定对象,如:
MyClass ex = MyClassFactory.init(1, "value");
现在,我要的是要实现相同的在C++中的事情。我见过一些例子(包括一些在stackoverflow的线程),但在所有这些例子中,他们使用abstarct类(而不是我的Java中的接口)。如果内存服务器对我来说,创建抽象类的实例是不可能的。所以,如果我们只是口上面的代码到C++,并使用一些抽象类而不是接口,它不会工作,因为这是禁伐:
MyClass ex = MyClassFactory.init(1, "value"); // <-- MyClass now is abstract
// so this is illegal
我的问题是我怎么做就怎么做同样的事情在C++?谢谢!
不能创建Java中的'interface'的情况下,无论是。 C++中的抽象类与Java中的接口类似。 –
'Java' *引用*在很多方面等价于'C++'指针。因此,在'Java'中,'MyClass ex = ...'将成为'C++''MyClass * ex = ...'。但是如答案所示,您应该在*智能指针*中管理返回的指针。 – Galik
谢谢你提供有用的信息! – Jacobian