UPDATE:型鋳造参照渡したときに
typedef uint16_t UnicodeChar;
UPDATE 2:配列のサイズが一致していないので、キャストすることは禁じられているように見えるかもしれません。この場合
。なぜそれが次に動作しないのかベットしてください。たとえば、サイズが10のu_array
(前の20ではない)を渡しています。
1.私はこの
void func(uint16_t (&pin_code)[10])
{
// do stuff
}
と配列(ここでUnicodeCharは明らかに16ビットである)のような機能を持っている:
私はあることを、この配列をキャストする必要がありますどのようにUnicode::UnicodeChar u_array[20];
をfunc()
に渡すことができますか?ところで
が、これは、エラーなしでコンパイル:
func((uint16_t (&)[10])u_array);
しかし、これはしていません:
func(static_cast<uint16_t (&)[10]>(u_array));
2.ことがあるのはなぜ?
3.(一般的なもの)その配列の種類はどのように書き込まれますか?たとえば、int (*)[10]
は10個の整数の配列へのポインタであり、int (&)[10]
は10個の整数の配列への参照ですが、配列自体は? int [10]
?
4.私はreference
型にarray
型オブジェクトをキャストしようとしていたとき、私は数で修正アム?
は 'はUnicode :: UnicodeChar' –
の定義は実際には'のUnicode :: UnicodeChar'が16ビットである*ない* "明白" のショー。 –
また、ポインタと長さの代わりに配列への参照を 'func'に渡す理由は何ですか?あるいは、 'std :: array'や' std :: vector'のような標準コンテナを使用しますか?あるいは、「配列のサイズ」テンプレート関数を使用することもできますか?配列を別の配列にすることはできません。'func'が配列の* contents *を変更したければ、ポインタで十分です。 –