2017-03-08 13 views
-7
for (dungeonLevel = 0; dungeonLevel < 5; dungeonLevel++) 
{ 

    if (dungeonLevel = "1") 
    { 
     cout<< "You will be fighting the warrior Apollo"; 
     cout<< "Do you want to 1. attack 2. defend 3. dodge"; 
     if (turn = "1") 
     { 
      yourDamage = rand() % 5 + 0; //generates a number between 1 and 5 

     } 

これは 'operator=' のあいまいなエラー曖昧過負荷C++ =

[ERROR]曖昧過製造される(オペランドタイプが 'std::string {aka std::basic_string<char>}' および「int 'である)

Iドン'これらのエラーについて何か知っていることは知りません。私はあなたが私に救いの手を与えることができることを願っています。

これは、エラーの原因となるラインである

+3

'場合(dungeonLevel = "1")'確かにあなたがここに '' ==意味ですか? (他のifと同じ) – Borgleader

+0

ようこそスタックオーバーフロー。 [The Tour](http://stackoverflow.com/tour)を読み、[ヘルプセンター](http://stackoverflow.com/help/asking)の資料を参考にしてください。ここに聞いてください。 –

+0

'yourDamage = rand()%5 + 0; // 1から5の間の数値を生成する?? – LogicStuff

答えて

3
if (dungeonLevel = "1") 

ありがとうございます。

if (dungeonLevel == 1) 

私がここで行われてきた2つの変更があります:あなたはそれになりたい

まずが、私は比較である==記号、で、代入演算子と呼ばれる=記号を、置き換えオペレーター。代入演算子は、演算子の左側の変数に値を代入するときに使用されます(5、 "hello"などの固定値とすることができます)。 if文の条件で実行しようとしているように、比較はしません。したがって、比較演算子(==)を使用する必要があります。比較演算子(==)は、左側のステートメントが右側のステートメントと同じであるかどうかをチェックし、比較の結果に応じてブール値(trueまたはfalse) if文の本文を入力するかどうかをコンパイラに指示します。したがって、if文の条件には(=)ではなく、(==)を使用する必要があります。

第二は、私は、文字列あなたがそこにint型の値を必要として、あなたのif文の条件に1からアポストロフィを削除されません。ループを実行するときは、カウンタをインクリメントします。カウンタは、intの値でなければなりません。


もう一つ:この行で

for (dungeonLevel = 0; dungeonLevel < 5; dungeonLevel++) 

、あなたは(多分あなたはforループのこの外をした)dungeonLevelのデータ型を宣言していません。タイプintとして宣言する必要があります。

これにあなたのforループのヘッダーを変更し

for (int dungeonLevel = 0; dungeonLevel < 5; dungeonLevel++) // Notice that I added the data type of dungeonlevel in its initialization statement 
+0

申し訳ありませんが、私はそれを変更しましたが、私はまだ変更する必要がありますエラーを取得しています\t文字列dungeonLevel = ""; intに?以来、私は比較演算子を使用して二重引用符を使用しないだろうか? – Dominik

+0

'dungeonLevel'は文字列であってはなりません。それを整数にします。 – drescherjm

+0

すみません、私の投稿を編集して、完全なエラーを含むようにしています。 –