我在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