2017-12-31 65 views
0

パラメータとしてchar *に若干の問題があります。私は前にこの問題を抱えたことはありませんでしたが、なぜ今起きているのか分かりません。C++ Strange char *パラメータの問題(互換性のない型)

void foo(char* param) 
{ 
    return; 
} 

foo("hello world"); 

我々はエラーが出るので、これは動作しません:

cannot convert argument 1 from 'const char [12]' to 'char *'

私は周りを見ていたが、何かを見つけることができませんでした「完全に問題ないはずです」何のわずかな例。私もキャラクターセットを変更しようとしましたが、それはどこにも行きませんでした。私は新しいプロジェクトを作りましたが、同じことが起こりました。多分どこかで設定を変更したことがありますか?

は、私は基本的な例のために働いたのconstを追加しようとしましたが、私はあまりにも見たことがないではない

void Setup() 
{ 
    Find<MyClass>("function.dll", "function"); 
} 

template <class i> 
i* Find(const char* module, const char* name) 
{ 
    return nullptr; 
} 

これは私に何かを与え、私のテンプレート用:

Conversion from string literal loses const qualifier (see /Zc:strictStrings)

+0

のですか?それは最近私に影響を与えただけで、私は長い間VS2017/2015を使ってきました。あなたの事例はちょうど私の心を吹き飛ばしました。私はすべてを再インストールするまで、VS2017でこれを行うことができました。 –

+0

ああ、それはちょっと守り切ってくれました –

+0

constを追加する別の例があります。 –

答えて

2

文字列リテラルは、 char const *char *ではありません。コンパイラはここで正しいです。あなたが修正char型の配列を持っているしたい場合は、行うことができます。その理由は

void foo(char *) { } 
char buf[] = {"hello, world"}; 
foo(bar); 
関連する問題