C ++ использовать Cout в методе класса - PullRequest
1 голос
/ 23 февраля 2012

Я получаю cin cout и endl как необъявленные ошибки, несмотря на использование #include <iostream>

#include "navigation.h"
#include <iostream>
Navigation::Navigation()
{
    xPos=0;
    yPos=0;
}
void Navigation::Move()
{
    //get direction
    int dir;
    cout << "Select a direction: " << endl;
    cout << "1) North    3) South" << endl;
    cout << "2) East     4) West " << endl;
    cin >> dir;
    //move
    switch(dir)
    {
    case 0://north
        yPos++;
        break;
    case 1://east
        xPos++;
        break;
    case 2://south
        yPos--;
        break;
    case 3://west
        xPos--;
        break;
    default:
        cout << "Invalid entry" << endl;
    }
}

void Navigation::Position(int &x, int &y)
{
    x = xPos;
    y = yPos;
}

Ответы [ 5 ]

13 голосов
/ 23 февраля 2012

Они находятся в пространстве имен std. Добавьте эти строки:

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

В качестве альтернативы, каждый раз, когда вы используете их, называйте их полными именами, например:

std::cout << "Select a direction: " << std::endl;      

Это очень утомительно и может усложнить чтение вашего кода.

Некоторые люди используют

using namespace std;

вместо этого, но вы можете получить нежелательные побочные эффекты от этого. Класс, который вы написали, может иметь то же имя, что и что-то другое в пространстве имен std, и ваш слишком широкий оператор using теперь вызовет коллизию. Вот почему вы никогда не должны говорить using namespace std; в заголовочном файле. В файле .cpp это нормально, но я предпочитаю отдельные утверждения сам. Это дает понять, кто читает ваш код, что вы используете из заголовков, которые вы включили.

4 голосов
/ 23 февраля 2012

Включите using namespace std; после ваших #include заявлений.

4 голосов
/ 23 февраля 2012

Они являются членами пространства имен std, поэтому вам нужно квалифицировать их с std: std::endl, std::cout и std::cin.

1 голос
/ 23 февраля 2012

endl, cin и cout находятся в пространстве имен std. Вам нужно либо using namespace std; в верхней части файла, либо использовать std::endl, std::cin и std::cout.

0 голосов
/ 23 февраля 2012

вам нужно объявить using namespace std; [после вашего #include s раздела] или использовать std::cout, std::cin, std::endl

...