2012-07-29 65 views

回答

5

移動include和main類之外,出線coutstd::

#include <iostream> 

class READY { 
public: 
    READY(); 
    virtual ~READY(); 
}; 


int main(){ 
    std::cout<<"hello"; 
} 

C++不是Java,main駐留在全球範圍內,而不是作爲一個類成員。

另外,它是<iostream>而不是<iostream.h>

無論你正在關注的教程或書籍,它都不是什麼好事。

+0

我做了這項工作,但它還不知道,它認爲cout是一個變量。 – 2012-07-29 01:23:57

+0

@BastianGata'cout' **是一個變量,是的。它被聲明爲'extern ostream&'。如果你有這個代碼,它不起作用,你的編譯器就會壞掉。見http://ideone.com/6BkTt – 2012-07-29 01:28:05

+0

我認爲我的編譯器有一個問題,因爲我在這個網站上運行其他代碼,你說它沒有任何問題。謝謝。 – 2012-07-29 02:03:07

2

您需要將該#include放在文件頂部;包括在課堂中間的標題會做奇怪,怪異的事情!至少,它會將頭中的所有名字嵌入到你的班級中;最有可能的是,它只會無法編譯。此外,現代C++將cout和基本上在標準庫中定義的每個其他符號放入一個名爲std的名稱空間中,因此您需要編寫std::cout,或者將「using namespace std;」放入到名稱空間std中。您的類定義之前,但#include.

+0

不要忘記它是iostream,而不是iostream.h – 2012-07-29 01:04:30

+0

確實;我也錯過了課堂上的'main'。我認爲你贏得了這一輪,我投票支持你的答案:) – 2012-07-29 01:05:08

1

後,有幾個與你的代碼的問題:

  • #include語句必須是類聲明之外。將它們放在文件的頂部並且不要通過文件分散它們是一種好的做法,因爲它通過觀察文件的頂部而不是在整個文件中搜索#include來更容易地檢查代碼中的依賴關係。
  • 您的main()函數也必須在類之外聲明和定義。與Jave相比,C和C++中的main()是一個獨立的函數。
  • 如前所述,cin和cout位於標準名稱空間中。我建議指他們具有完全限定域名(即給std :: cin和std ::法院),雖然可以畢竟使用using std::cin;using std::cout;無論是在函數內部或在您的實現文件包括
  • 你包括iostream.h - 這是「錯誤」的文件,因爲這是舊的iostreams庫。標準兼容iostream的正確內容是<iostream>
相關問題