2014-11-04 107 views
0

我試圖創建一個大小變量的數組(即array [x] [y]),這將無法工作。我偶然發現提示使用向量的向量後:將具有變量的矢量向量傳遞給函數

vector<vector<int> > grid(GetGridXComponent(), vector<int>(GetGridYComponent())); 

的GetGridXComponent()和GetGridYComponent()從類中檢索私有變量。

該代碼在函數內工作,但我需要能夠訪問該類之外的矢量「網格」。要做到這一點,我試圖創建一個公共實例:

vector<vector<int> > grid(GetGridXComponent(), vector<int>(GetGridYComponent())); 

但當然,GetGridXComponent()和GetGridYComponent()不會工作,因爲它認爲我創建一個函數,並希望我申報鍵入GetGridXComponent()。

有沒有辦法解決這個問題?我是否比它所需要的更難? 在此先感謝。

Class Simulator 
{ 
    private: 
    int s_iGridXComponent; 
    int s_iGridYComponent; 
    public: 
    Simulator(); 
    ~Simulator(); 
    int GetGridXComponent(); 
    int GetGridYComponent(); 
    void Function(vector<vector<int> >&); 
    vector<vector<int> > pelletGrid(GetGridXComponent(), vector<int>(GetGridYComponent())); 
} 

void Simulator::Function(vector<vector<int> > &grid) 
{ 
    code; 
} 

回答

0

假設你只是想創建一個名爲pelletGrid類成員,這是一個二維矢量應該只是這樣的:

class Simulator 
{ 
    private: 
     int s_iGridXComponent; 
     int s_iGridYComponent; 
     std::vector<std::vector<int>> pelletGrid; 

    public: 
     Simulator(const int x, const int y) : 
       s_iGridXComponent(x), 
       s_iGridYComponent(y), 
       pelletGrid(x, std::vector<int>(y)) 
     { } 

     void CreateGrid (const int x, const int y) 
     { 
      s_iGridXComponent = x; 
      s_iGridYComponent = y; 

      pelletGrid = std::vector<std::vector<int>>(x, std::vector<int>(y)); 
     } 

}; 

您可以依次請使用構造函數或自定義方法根據何時知道X/Y尺寸來初始化2D矢量。