2017-05-10 39 views
1

私はこれを序文に含めました(これは、文字列、endlにも当てはまります。私のIDEは構文が変わってもエラーは表示されません。なぜこの問題が起こっているのか理解できません。私が書いた他のC++コードサンプルの1つでうまく動作します。Coutはstdのメンバーではありません。C++に関するその他の問題

私は小さなゲーム、牛と牛を作ろうとしています。次のように私の主なコードに見えます:

#include <iostream> 

#include "stdafx.h" 
#include "BullsAndCows.h" 



using std::cout; 
using std::endl; 
using std::cin; 
using std::string; 

int main() 
{ 

    string userInput = ""; 
    bool playAgain = false; 

    int gameDiff; 

    constexpr char * GREETING = "Welcome to Bulls and Cows! Please enter the difficulty level: (1) Easy, (2) Medium, (3) Hard"; 

    cin >> gameDiff; 

    do 
    { 
     BullsAndCows *bc = new BullsAndCows(); 
     bc->playGame(gameDiff); 

    } while (playAgain); 


    constexpr char * INFORMATION = "Total Word Length is: "; 

    //Introduce the game. 

    cout << GREETING <<endl; 

    return 0; 
} 

マイヘッダ:

最後に
#ifndef BULLSANDCOWS_H 
#define BULLSANDCOWS_H 



class BullsAndCows { 

public: 


    void playGame(int gameDiff); 


}; 

#endif 

、私BullsAndCows.cppファイル:私は取得しています

#include <iostream> 
#include <string> 
#include "stdafx.h" 
#include "BullsAndCows.h" 

using std::cout; 
using std::endl; 
using std::cin; 
using std::string; 

void BullsAndCows::playGame(int gameDiff) { 

    string wordGuess = ""; 
    string secretWord = ""; 
    int numBulls = 0; 
    int numCows = 0; 
    int numGuesses = 0; 

    switch (gameDiff) 
    { 

    case 1: { 
     numGuesses = 30; 

     secretWord = "Hello"; 

     for (int i = 0; i < 30; i++) { 

      numBulls = 0; 
      numCows = 0; 

      cout << "Word Length to Guess Is Five, you have " << numGuesses << " guesses remaining" << endl; 
      cout << "Enter your word guess"; 
      cin >> wordGuess; 

      for (int j = 0; j < wordGuess.length; j++) { 
       if (wordGuess.at(j) == secretWord.at(j)) { 
        numBulls++; 
       } 
       else if (secretWord.find(wordGuess.at(j)) != -1) { 
        numCows++; 
       } 
      } 

      cout << "Bulls: " << numBulls << endl; 
      cout << "Cows: " << numCows << endl; 

      if (numBulls == secretWord.length) { 
       cout << "YOU WIN!" << endl; 
       break; 
      } 

     } 

     break; 
    } 
     case 2: 
      numGuesses = 20; 
      break; 
     case 3: 
      numGuesses = 10; 
      break; 
    } 

} 

エラーCOUTはメンバーではありません」とof std "を使用すると、Coutシンボルはusing宣言で使用できません。それ以前は "using namespace std"を使用していましたが、 "BullsAndCows"のようなエラーはネームスペースやクラスではありません(クラスでなければ、私はマーティンでなければなりません)。また、 ";"私のmain.cppコードの中のuserInputの前に。それは何もないので意味がありません。私はVS2017を使用しています。 C++のような厄介な言語がなぜ機能するのですか?

+0

1つはケース1の最初に関連していました。私はなぜこれらのエラーをすべて投げているのか分かりません。それは本当に0感覚を作る。 – SomeStudent

+0

本当に[mcve]が必要ですが、ここに掲載されているコードからmain.cppは 'std :: string'の定義を見ることができませんので、main.cppに' #include 'を追加してください – AndyG

+0

これは機能ですか? Visual Studioの代わりにC++自体?私は何かをしてから何年も経ちましたが、 '#include" stdafx.h "以前のものは自動プリコンパイルのために無視される傾向があります。 '#include" stdafx.h "'の後に '#include 'を移動するとどうなりますか? –

答えて

4

場所ディレクティブ

#include "stdafx.h" 

他には、ディレクティブを含める前に。

+0

Spasibya。 100%。私の頭は、ちょうど私の机を通って中国の大きさの穴を作った。私はもっ​​と多くのファイル/プロジェクトを作るとき、将来のことを考えています。私はあなたの答えを受け入れるでしょうタイマーができたら。 – SomeStudent

+0

@SomeStudentいいえ、まったくありません。どういたしまして。 –

+0

プリコンパイル済みヘッダーを使用しないことをお勧めします。どのくらいの時間を費やしてビルド時間を測定し、プリコンパイルされたヘッダーが価値があるかを判断する必要があります。 –

関連する問題