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:
void Init1(int argc, char** argv);
void Init2(int argc, const char** argv);
那麼什麼是定義我的主簽名的最佳途徑調用這兩個函數?
這個轉換的問題不會與'Init2'試圖修改const字符(它不能在沒有強制轉換的情況下進行),而是通過設置const char *來指向一個地址實際的'const char',然後,例如,'Init1'試圖修改那個地址上的字符,只要它知道它應該是完全安全的,因爲它的參數是'char **'。所以不,這是不安全的。這就是編譯器抱怨的原因。 –