これはc99標準による有効なコードであり、このコードスニペットはgccコンパイラで正常に動作しています。C++の関数に動的な2次元を渡す方法
#include <stdio.h>
void foo(int n, int m, int a[][m]){
//do stuff
}
int main() {
int n,
m;
scanf("%d %d", &n, &m);
int a[n][m];
foo(n, m, a);
return 0;
}
しかし、同等のC++コードはg ++コンパイラでは実行されていません。
#include <cstdio>
#include <iostream>
using namespace std;
void foo(int n, int m, int a[][m]){
//do stuff
}
int main() {
int n,
m;
cin >> n >> m;
int a[n][m];
foo(n, m, a);
return 0;
}
次のエラーが発生しています。
error: use of parameter outside function body before ‘]’ token
void foo(int n, int m, int a[][m]){
この問題では、Cで使用できるC++の単純な解決策が見つかりません。
どのC++標準でコンパイルしていますか?もっと重要なのは、このプログラムはC++で書かれていなければなりませんか? –
2つの異なる言語が同じ機能を持つと思われる理由は何ですか? – Olaf
C++を使用している場合、なぜベクターを使用しないのですか?ここで何人のユーザーがCの多次元配列に問題があるのかは信じられません。 –