2013-10-30 23 views
2

我有一個基類,當我調用訪問系統的構造函數並根據配置返回它的一個子類時。 主要思想和類是抽象他自己的工廠,根據需要返回到一個子類,具體取決於配置系統。在構造函數中返回子類方法

我代表我的想法到C + +,不一定要具體到他的東西一個草案,但對於其他語言如Java等的一般方法..

是可能的嗎?

實施例:

class system { 
    public: 
     Config config; 
} 

class Base { 
    public: 
     Base() { 
      if(System.getInstance().config == Config.FooMode) { 
       Foo foo = new Foo(); 
       return foo; 
      } 
     }; 
}; 

class Foo: public Base { 
    public: 
     float a; 
     float b; 
     float c; 
} 

class Boo: public Base { 
    public: 
     float d; 
     float f; 
     float g; 
} 

int main() { 
    Point point = new Point(); 
    return 0; 
} 
+2

改爲使用[工廠方法](http://stackoverflow.com/questions/5120768/how-to-implement-the-factory-pattern-in-c-correctly)。 –

+0

構造函數不返回C++或Java(或C#)。 –

回答

2
不可能

。構造函數不返回任何東西,使用另一種方法作爲factory方法。

class Base 
{ 
    Foo makeFoo() 
    { 
    } 
    ... 
}; 

我迷惑你的代碼是C++或Java,所以不知道應該用什麼樣的代碼。

0

您可能需要刷新基本OO概念。 Constructors不返回任何東西。那麼,從某種意義上說,他們確實返回classinstance,但是您不能使用constructors中的任何return類型。甚至沒有void。爲什麼?閱讀THIS

相關問題