2013-07-26 62 views
0

所以我有一個頂點數組,我試圖用文件中的數據填充數組。C++創建數組?

現在我的代碼如下所示:

int VertexCount = Input.get(); 
    MVertex Vertices[4] = 
    { 
     {0.0f, 0.0f, 0.0f,}, 
     {1.0f, 0.0f, 1.0f,}, 
     {0.0f, 0.0f, 1.0f,}, 
     {1.0f, 0.0f, 0.0f,}, 
    }; 

現在它工作得很好,除了使用VertexCount初始化數組的大小,但我想它,這取決於頂點我需要一個for-loop來爲我填寫數據。我想保持相同的數組格式,因爲由於某種原因它不能以其他方式工作,但是像這樣。我在想:

int VertexCount = Input.get(); 
    MVertex Vertices[VertexCount] = 
    { 
     for (int i = 0; i < VertexCount; i++) 
     { 
      {Input.get(), Input.get(), Input.get(),}, 
     } 
    }; 

但是,這不起作用我只是得到一些語法錯誤。有人可以告訴我怎麼寫嗎?

+0

請編輯您的問題,以包括'MVertex'聲明。 –

回答

2

你試圖一次做太多的事情。你需要打破這種分爲兩個步驟:

  1. 聲明數組和分配數組:

    int VertexCount = Input.get(); 
    MVertex* Vertices = new MVertex[VertexCount]; 
    
  2. 初始化數組的元素:

    for (int i = 0; i < VertexCount; i++) 
    { 
        MVertex v; 
        v.x = Input.get(); 
        v.y = Input.get(); 
        v.z = Input.get(); 
    
        Vertices[i] = v; 
    } 
    

請注意,我分別創建了MVertex對象。在我看來,這使得你的代碼更加清晰。它還可以幫助您編寫代碼,因爲您一次只關注一件事,而不是嘗試用更復雜的語法一次完成多個步驟。

我還假設MVertex中的三個字段分別命名爲x,yz;適當更改這些。

由於該代碼分配一個動態數組,你必須免費的,當你使用它的聲明

delete[] Vertices; 
-1

要創建可變大小的數組完成所分配的內存,使用new運算符

MVertex* Vertices = new MVertex Vertices[VertexCount]; 

在堆上創建數組(並記住稍後刪除[]],或者使用STL容器,如std :: vector。

+0

這只是一個部分答案,因爲它沒有說明如何初始化分配數組的元素。 –