無名配列の初期化リストキャスト:私は成功したchar型の文字列の配列の初期化子リストのCのキャストを行うことができますが、それは、C++のキャスト(static_castを)で動作するように見えることはできません
int main()
{
char x[] = "test 123";
// This works fine:
char **foo = (char *[]) { "a", x, "abc" };
std::cout << "[0]: " << foo[0] << " [1]: " << foo[1]
<< " [2]: " << foo[2] << std::endl;
// This will not compile ("expected primary-expression before '{' token"):
//char **bar = static_cast<char *[]>({ "a", x, "abc" });
//std::cout << "[0]: " << bar[0] << " [1]: " << bar[1]
// << " [2]: " << bar[2] << std::endl;
}
を
ここでC++キャストを使用できますか?もしそうなら、正しい構文は何ですか?もしそうでないなら、私はやってはならない何かを私に奪わせるCキャストですか?
最終的には、これは私がパラメータとしてchar配列ポインタを持つ関数を呼び出すことを要求しているため、呼び出し引数として匿名配列を使用したいと考えています。
私はGCC 4.4.6を使用しています。
これはC99のものです。* "カッコで囲まれた型名とそれに続くイニシャライザの囲まれたリストで構成されるpostfix式は**複合リテラル**です。" *、C++のような括弧付きの初期化子ではありません –
'' std :: array 'を受け入れるようにその関数のシグネチャを変更してください。 –