2017-04-15 59 views
0

比方說,我有一個類箱基於用戶輸入如何創建對象

class Box{ 
    ... 
}; 

,我需要創建一個基於用戶的輸入框。我試圖讓一個Blueprint對象

方法1:

int main(){ 
    Box box; //Blueprint 
    vector<Box> boxes; 
    for(int i = 0; i < 5; i++) //Creates 5 boxes 
     boxes.push_back(box); 

    return 0; 
} 

這工作。它創建一個包含5個框對象的Vector。 但後來我試着做以下,所以我可以設置值的每次我創建一個對象與構造

方法2:

int main(){ 
    vector<Box> boxes; 

    for(int i = 0; i < 5; i++){ //Creates 5 boxes 
     //Lets assume we input x and y every time 
     Box box(x, y); 
     boxes.push_back(box); 
    } 

    return 0; 
} 

這似乎是工作得很好,當使用boxes[i].x它給我的x值,因爲它應該。請注意,x和y是公開而不是私人爲簡化示例。

我看到this後,用戶帕特里克解釋瞭如何創建動態使用大量類的命名盒例如工廠對象,我不明白,你必須把它複雜所以不是很多使用的一個我在這篇文章中嘗試了兩種方法併爲我工作。

我的問題是:

  1. 是我的方法,使基於用戶輸入
  2. 如果是的,這是我的方法之一是最好的出了兩
  3. 對象的正確方法是什麼從其他崗位

我提出的原程序有一個名爲AI類我的方式和帕特里克之間的區別,我想麥e更多這個類的對象基於用戶想要對抗多少AI。

+0

這些是不同的方法:第一個複製同一個對象,第二個創建新的,可能不同的對象。而且,只有第二種方法接受用戶輸入。 – ForceBru

+0

這就是爲什麼我第一種方法並不「開心」,並創建了第二種方法,但我不是一個好的程序員,而且我創建了他們,我不知道這是否是正確的方式 – Christina

+0

兩者都很好。如果您想稍微改進第二個,請考慮使用emplace_back以避免每次都複製對象:'盒子。emplace_back(x,y);' – ehudt

回答

0

對象工廠是時間的主要部分,用於從用戶輸入中創建不同的對象。

想象一下,您有一個名爲Animal的類。你有3個孩子班:貓,狗和魚。正如我所說,這些類都是從Animal繼承而來的。你想創建一隻貓,一隻狗或一條魚,以取決於用戶的輸入。在這種情況下,Object Factory是非常有用的。在你的情況下,這不是因爲你總是實例化一個盒子對象

你這樣做的方式很好。當時您不需要像對象工廠那樣更復雜的東西。