c ++在类方法中使用cout

时间:2012-02-22 20:53:20

标签: c++ class methods io iostream

尽管使用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 个答案:

答案 0 :(得分:13)

它们位于std命名空间中。添加以下行:

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

或者,每次使用它们时,请按全名调用它们,例如:

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

这很快就会很烦人,也会使你的代码更难阅读。

有些人使用

using namespace std;
相反,你可能会受到不必要的副作用。您编写的类可能与std命名空间中的其他类具有相同的名称,并且您的over-broad using语句现在将导致冲突。这就是为什么你不应该在头文件中说using namespace std;。在一个.cpp文件中没关系,但我更喜欢自己的个人陈述。无论是谁从你所包含的标题中读取你所使用的内容,它都能清楚地表明。

答案 1 :(得分:4)

他们是std命名空间的成员,因此您需要使用stdstd::endlstd::coutstd::cin对其进行限定。

答案 2 :(得分:4)

using namespace std;声明之后加入#include

答案 3 :(得分:1)

endl,cin和cout位于命名空间std中。您需要在文件顶部附近using namespace std;,或使用std::endlstd::cinstd::cout

答案 4 :(得分:0)

您需要在[{1}}部分之后声明using namespace std;或使用#includestd::coutstd::cin