2014-11-04 69 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矢量。