C++ 11で可能です。あらかじめメモ:new
の配列はありません。その必要はありません。
まず、string[] strArray
は構文エラーです。string* strArray
またはstring strArray[]
のいずれかです。そして、私はあなたがどんなサイズのパラメータも渡さないという例のためだけだと仮定します。テンプレート:あなたは余分なパラメータとして配列のサイズを渡す必要はありませんでした場合、それが良いだろう、とありがたいな方法があることを
#include <string>
void foo(std::string* strArray, unsigned size){
// do stuff...
}
template<class T>
using alias = T;
int main(){
foo(alias<std::string[]>{"hi", "there"}, 2);
}
注意!
template<unsigned N>
void foo(int const (&arr)[N]){
// ...
}
これは、int x[5] = ...
のようなスタック配列にのみ一致することに注意してください。または上記のalias
の使用によって作成された一時的なもの。
int main(){
foo(alias<int[]>{1, 2, 3});
}
出典
2012-03-08 23:53:45
Xeo
なぜ動的に割り当てられたCスタイルの配列を使用しますか?代わりに 'std :: vector'を使うことをお勧めします。 C++ 11を使用する場合、初期化リストを使用してそれらを構築することができます。 'void foo(vector); –
Grizzly