2017-06-29 8 views
1
char grid2d[x][y]; 

各インデックスの定数(または定義)が必要であるため、機能しません。私の問題は、これらの値がランタイムまでわからないということです。しかし、私はこの形式を期待している関数を呼び出すので、このシグネチャを使用する必要があります。C++で、変数grid2d [x] [y]を設定する方法

これを動作させる方法に関するアイデアはありますか?私は同じ理由(実行時まで知られていない値)のために定義を使用することはできません。

+1

を使用することができ、あなたが使用する必要があります[ 'のstd :: vector'](http://en.cppreference.com/w/cpp/container/vector )動的配列の代わりに。 –

+1

btwどうしても#defineを使って定数を定義するのは避けるべきです。 – user463035818

+0

VLA(Variable Length Arrays)は標準的なC++の機能ではありません... –

答えて

1

std::vectorを使用すると、実行時に動的サイジングを可能にするコンテナを取得できます。例えば

std::vector<std::vector<int>> grid2d; 
+1

これは答えではありません、これはコメントです – Amadeus

1

あなたが署名としてchar型へのポインタへのポインタを使用することができます。

void func(char **grid2d) 
{ 
     //use grid2d[1][2] 
} 
int main() 
{ 
    //input x and y 
    char **grid2d; 
    grid2d=new char*[x]; 
    for(int i=0;i<x;i++) 
     grid2d[i]=new char[y]; 
    func(grid2d); 
} 

それとも、単に一般的にstd::vector

void func(vector<vector<char> > grid2d) 
{ 
    //use grid2d[1][2] 
} 
int main() 
{ 
    //input x and y 
    vector<vector<char> > grid2d(x,vector<char>(y)); 
    func(grid2d); 
} 
関連する問題