私は次のように機能を遅らせるサードパーティのライブラリを持っています:
void foo(const void* input, char output[1024]);
このようなものを書くと:
char* input = "Hello";
char output[1024];
foo(input, output); // OK
しかし、スタック上でそのような大きな配列を宣言したくありません (OS カーネル環境では非常に危険です)。だから私はこのようなことをしなければなりません:
char* input = "Hello";
char* output_buf = new char[1024];
foo(input, output_buf); // Compiler Error C2664
foo の実装を変更することはできません。どうすればいいですか?
=================
問題は解決しました。私の実際のコードは次のようなものです:
char* input = "Hello";
void* output_buf = new char[1024];
foo(input, output_buf); // Compiler Error C2664
void* から char* への変換は、標準では暗黙的に受け入れられません。したがって、次のコードが機能します。
char* input = "Hello";
void* output_buf = new char[1024];
foo(input, (char*)output_buf); // OK