1
次のコードはコンパイルできません。変換タイプに「char **」「のconstのchar **」
char** s;
const char** s2 = s;
私は以下が動作することができます知っているが、私が行うためにいくつかのより良い合法的な方法があるはずだと思いますそれ?
long long x = reinterpret_cast<long long>(s);
s2 = reinterpret_cast<const char**>(x);
この質問の背景には、私は異なるシグネチャとのargc/argvの取り扱い 機能を持つ2つのライブラリを使用したいされています
void Init1(int argc, char** argv);
void Init2(int argc, const char** argv);
を次にメインの私の署名を定義するための最良の方法は何でしょうそれらの2つの関数の両方を呼び出すのですか?
この変換の問題は、 'Init2'がconst文字(キャストなしではできない)を変更しようとしているときではなく、 'const char *'を設定して実際の 'const char'を実行し、' Init1'はそのアドレスの文字を変更しようとします。これは、引数が 'char **'なので完全に安全であるはずです。だから、これは安全ではありません。だから、コンパイラが不平を言うのです。 –