2012-02-22 66 views
1

我越來越cincoutendl爲未申報的錯誤,儘管使用#include <iostream>C++中的方法使用COUT

#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; 
} 
+4

用'std ::'(好樣式)或使用'namespace std;'(壞樣式)作爲前綴。 – lapk 2012-02-22 20:55:22

+0

嘗試std :: cout,std :: endl,std :: cin。或者添加一個using namespace std;某處(在你包括它之後是一個不錯的地方)。 – 2012-02-22 20:56:42

+0

爲什麼'命名空間'被認爲是不好的風格? – Yamiko 2012-02-22 21:03:32

回答

13

它們位於標準名稱空間中。添加這些行:

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

另外,每次使用它們時,通過其全名,給他們打電話,例如:

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

這得到煩人非常迅速,可以使你的代碼難以閱讀,太。

有些人用

using namespace std; 

代替,但你可能會從不必要的副作用。您寫的類可能與std名稱空間中的其他名稱具有相同的名稱,並且您的廣泛使用語句現在將導致衝突。這就是爲什麼你永遠不應該在頭文件中說using namespace std;。在.cpp文件中沒問題,但我更喜歡個人陳述。它向任何人讀取您的代碼清楚了您使用的頭文件。

+0

恕我直言,它使得它更容易閱讀,每次使用'std ::'。明確地將標準庫實體與您自己代碼中聲明的事物劃分開來。 – 2014-07-04 00:09:05

4

他們是std命名空間的成員,所以你需要用std要符合他們:std::endlstd::coutstd::cin

0

需要聲明using namespace std; [您#include S部件後]或使用std::coutstd::cinstd::endl

1

ENDL,CIN和COUT是在命名空間std。您需要靠近文件頂部的using namespace std;,或使用std::endl,std::cinstd::cout

4

包括using namespace std;您的#include陳述後。