定義された関数を...
void func (int a [3]) { ... }
私はそのように動的静的配列を渡すことができるようにしたいと思います
func (new int [3] {1,2,3});
それ以外の...
int temp [3] = {1,2,3};
func(temp);
これは C++ で可能ですか?
定義された関数を...
void func (int a [3]) { ... }
私はそのように動的静的配列を渡すことができるようにしたいと思います
func (new int [3] {1,2,3});
それ以外の...
int temp [3] = {1,2,3};
func(temp);
これは C++ で可能ですか?
C++11 コンパイラを使用している場合は、問題なく動作します (ただし、メモリを使用するfunc (new int [3] {1,2,3});
責任があることに注意してください)。delete
gcc では、-std=c++11
フラグを渡すだけです。
ただし、std::array
使用する必要がないように調べてくださいnew
:
例
void func (std::array<int, 3> a)
{
}
int main()
{
func({{1, 2, 3}});
}
私のコンパイラー(CDT拡張機能を備えたEclipseインディゴ)で動作しますが、すべての環境で動作するとは限らないことを示唆する警告が表示されます。
拡張初期化子リストは、-std = c++0xまたは-std=gnu++0xでのみ使用可能です[デフォルトで有効]
これが私のテストコードです:
void func (int a[3])
{
cout << a[2];
}
int main()
{
func(new int[3]{1,3,8});
}
コンソールに「8」を正常に出力します。
の例はnew int [3] {1,2,3}
問題なく機能しますが、呼び出されるたびにヒープに配列が割り当てられます。
タイプキャストを使用してスタック上でそれを実行できるはずです。
func((int[]){1,2,3});