簡體   English   中英

為什么eclips在我的代碼中不知道cout和cin?

[英]why does not eclips know cout and cin in my code?

我是C ++的新手,我想用eclips編寫程序,但是它不知道cout和cin,但是我添加include這是我的代碼:

class READY {
public:
READY();
virtual ~READY();
#include <iostream.h>
int main (){
cout<<"hello";
 }


 };

#endif /* READY_H_ */

將include和main移動到類之外,並使用std::限定cout

#include <iostream>

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


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

C ++不是Java, main駐留在全局范圍內,而不是作為類成員。

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

無論您要遵循的是哪本教程或書,都不好。

您需要將#include放在文件頂部; 在一個班級中間包含標題會做一些奇怪的事情! 至少,它將把標頭中的所有名稱都嵌入到您的類中。 最有可能的是,它將完全無法編譯。

此外,現代C ++將cout和標准庫中定義的其他所有符號放入名為std的命名空間中,因此您需要編寫std::cout或“使用命名空間std;”。 在類定義之前,但在#include.

您的代碼有兩個問題:

  • #include語句必須在類聲明之外。 優良作法是將那些文件放在文件的頂部,而不是分散在文件的頂部,因為這樣可以更容易地通過盯住文件的頂部而不是在整個文件中搜索#includes來檢查代碼中的依賴項。
  • 您的main()函數也必須在類外部進行聲明和定義。 與Jave相反,C和C ++中的main()是一個獨立的函數。
  • 如前所述,cin和cout位於std名稱空間中。 我建議您使用完全限定的名稱(例如std :: cin和std :: cout)來引用它們,盡管您可以使用using std::cin;來使用using std::cin; using std::cout; 在函數內部或在實現文件中畢竟包括
  • 您包括iostream.h-這是“錯誤的”文件,與舊的iostreams庫相同。 對於符合標准的iostream,正確的include是<iostream>

為什么我的代碼與 cout 有問題&lt; <num0+num1?< div><div id="text_translate"><p> 代碼在main中有問題。 當我嘗試cout&lt;&lt;num0-num1; 單獨或cout&lt;&lt;num0+num1; 單獨他們工作正常,但是當我一起做時,代碼只是停止打印其中一個,代碼的 rest 停止。 我的意思是:如果我把主要寫成:</p><pre class="lang-cpp prettyprint-override"> cout &lt;&lt; "Hello world;" &lt;&lt; endl, Fraction num0(90;150), Fraction num1(13;65); Fraction num2; cout&lt;&lt;num0; cout&lt;&lt;num1; cout&lt;&lt;num0-num1; cout&lt;&lt;num2; cout&lt;&lt;"idk whats wrong";</pre><p> 它工作正常並打印出來:</p><pre> 90/150 13/65 2/5 1/1 idk whats wrong Process returned -1073741819 (0xC0000005) execution time: 2.184 Press any key to continue.</pre><p> 但是,如果我把它寫成</p><pre class="lang-cpp prettyprint-override"> cout &lt;&lt; "Hello world;" &lt;&lt; endl, Fraction num0(90;150), Fraction num1(13;65); Fraction num2; cout&lt;&lt;num0; cout&lt;&lt;num1; cout&lt;&lt;num0-num1; cout&lt;&lt;num2; cout&lt;&lt;num0+num1; cout&lt;&lt;"idk whats wrong";</pre><p> 它打印:</p><pre> Hello world: 90/150 13/65 2/5 Process returned -1073741819 (0xC0000005) execution time. 2.608 s Press any key to continue.</pre><p> 這是代碼:<strong>主要:</strong></p><pre class="lang-cpp prettyprint-override"> #include &lt;iostream&gt; using namespace std; #import "Fraction.h" int main() { cout &lt;&lt; "Hello world;" &lt;&lt; endl, Fraction num0(90;150), Fraction num1(13;65); Fraction num2; cout&lt;&lt;num0; cout&lt;&lt;num1; cout&lt;&lt;num0-num1; cout&lt;&lt;num2; cout&lt;&lt;num0+num1; cout&lt;&lt;"idk whats wrong"; return 0; }</pre><p> <strong>分數 header:</strong></p><pre class="lang-cpp prettyprint-override"> #ifndef FRACTION_H #define FRACTION_H #include &lt;iostream&gt; using namespace std; class Fraction { public: Fraction(int num, int denom); Fraction(); Fraction reducedFraction(Fraction fract); Fraction operator+(const Fraction &amp;fraction); Fraction operator-(const Fraction &amp;fraction); Fraction&amp; operator= (const Fraction &amp;fraction); Fraction operator/(const Fraction &amp;fraction); Fraction operator*(const Fraction &amp;fraction); bool operator&lt;(const Fraction &amp;fraction); bool operator&gt;(const Fraction &amp;fraction); bool operator&lt;=(const Fraction &amp;fraction); bool operator&gt;=(const Fraction &amp;fraction); bool operator==(const Fraction &amp;fraction); friend ostream&amp; operator&lt;&lt;(ostream&amp; os, const Fraction&amp; fraction); friend istream&amp; operator&gt;&gt;(istream&amp; is, Fraction&amp; fraction); void setNum(int num); int getNum(); void setDenom(int denom); int getDenom(); virtual ~Fraction(); private: int num; int denom; int* arrN; int* arrD; int* arrC; }; #endif // FRACTION_H</pre><p> <strong>分數.cpp</strong></p><pre> #include "Fraction.h" Fraction::Fraction() { num=1; denom=1; } Fraction::Fraction(int num,int denom) { this-&gt;num=num; this-&gt;denom = denom; } void Fraction::setNum(int num) { this-&gt;num = num; } void Fraction::setDenom(int denom) { this-&gt;denom = denom; } int Fraction::getDenom() { return denom; } int Fraction::getNum() { return num; } Fraction Fraction::operator+(const Fraction&amp; fraction) { Fraction tmp; tmp.num=(this-&gt;num*fraction.denom)+(fraction.num*this-&gt;denom); tmp.denom =this-&gt;denom*fraction.denom; return reducedFraction(tmp); } Fraction Fraction::operator-(const Fraction &amp;fraction) { Fraction tmp; tmp.num=(this-&gt;num*fraction.denom)-(fraction.num*this-&gt;denom); tmp.denom =this-&gt;denom*fraction.denom; return reducedFraction(tmp); } Fraction Fraction::operator*(const Fraction &amp;fraction){ Fraction tmp; tmp.num=this-&gt;num*fraction.num; tmp.denom=this-&gt;denom*fraction.denom; return reducedFraction(tmp); } Fraction Fraction::operator/(const Fraction &amp;fraction){ Fraction tmp; tmp.num=this-&gt;num*fraction.denom; tmp.denom=this-&gt;denom*fraction.num; return reducedFraction(tmp); } bool Fraction::operator==(const Fraction &amp;fraction){ if((this-&gt;num/this-&gt;denom)==(fraction.num/fraction.denom)){ return true; } else { return false; } } bool Fraction::operator&gt;(const Fraction &amp;fraction){ if((this-&gt;num/this-&gt;denom)&gt;(fraction.num/fraction.denom)){ return true; } else { return false; } } bool Fraction::operator&lt;(const Fraction &amp;fraction){ if((this-&gt;num/this-&gt;denom)&lt;(fraction.num/fraction.denom)){ return true; } else { return false; } } bool Fraction::operator&gt;=(const Fraction &amp;fraction){ if((this-&gt;num/this-&gt;denom)&gt;=(fraction.num/fraction.denom)){ return true; } else { return false; } } bool Fraction::operator&lt;=(const Fraction &amp;fraction){ if((this-&gt;num/this-&gt;denom)&lt;=(fraction.num/fraction.denom)){ return true; } else { return false; } } Fraction&amp; Fraction::operator= (const Fraction &amp;fraction) { this-&gt;num=fraction.num; this-&gt;denom = fraction.denom; return *this; } ostream&amp; operator&lt;&lt;(ostream&amp; os, const Fraction&amp; fraction) { os&lt;&lt;fraction.num&lt;&lt;"/"&lt;&lt;fraction.denom&lt;&lt;endl; return os; } Fraction Fraction::reducedFraction( Fraction fract) { int* arrN = new int[fract.num]; int* arrD = new int[fract.denom]; int* arrC; int countN=0; int countD=0; for (int i = 2; i&lt;=fract.num; i++) { if (fract.num%i==0) { arrN[countN]=i; countN++; } } for (int i = 2; i&lt;=fract.denom; i++) { if (fract.denom%i==0) { arrD[countD]=i; countD++; } } if (countN&gt;=countD) { arrC = new int[countN]; } else { arrC = new int[countD]; } int countC =0; for ( int i = 0; i &lt;countN; i++) { for (int j=0; j&lt;countD; j++) { if(arrN[i]==arrD[j]) { arrC[countC]=arrN[i]; countC++; } } } int maxN = arrC[0]; for ( int i =1; i&lt;countC; i++) { if (arrC[i]&gt;maxN) { maxN=arrC[i]; } } Fraction tmp; tmp.num = fract.num/maxN; tmp.denom=fract.denom/maxN; return tmp; } Fraction::~Fraction() { delete[]arrC; delete[]arrN; delete[]arrD; }</pre> </div></num0+num1?<>

[英]Why does my code have trouble with cout<<num0+num1?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 為什么此代碼不使用文件流切換cin和cout? 為什么在更復雜的 cin 和 cout 中調用我的 C++ iostream 過載失敗? 為什么在使用cout / cin時C ++代碼中的錯誤? 為什么程序會跳過字符串數組和cin / cout的循環 為什么它會出現在我們在 arrays 中沒有的東西中? 為什么我的代碼首先執行后面的cout? 為什么我的代碼與 cout 有問題&lt; <num0+num1?< div><div id="text_translate"><p> 代碼在main中有問題。 當我嘗試cout&lt;&lt;num0-num1; 單獨或cout&lt;&lt;num0+num1; 單獨他們工作正常,但是當我一起做時,代碼只是停止打印其中一個,代碼的 rest 停止。 我的意思是:如果我把主要寫成:</p><pre class="lang-cpp prettyprint-override"> cout &lt;&lt; "Hello world;" &lt;&lt; endl, Fraction num0(90;150), Fraction num1(13;65); Fraction num2; cout&lt;&lt;num0; cout&lt;&lt;num1; cout&lt;&lt;num0-num1; cout&lt;&lt;num2; cout&lt;&lt;"idk whats wrong";</pre><p> 它工作正常並打印出來:</p><pre> 90/150 13/65 2/5 1/1 idk whats wrong Process returned -1073741819 (0xC0000005) execution time: 2.184 Press any key to continue.</pre><p> 但是,如果我把它寫成</p><pre class="lang-cpp prettyprint-override"> cout &lt;&lt; "Hello world;" &lt;&lt; endl, Fraction num0(90;150), Fraction num1(13;65); Fraction num2; cout&lt;&lt;num0; cout&lt;&lt;num1; cout&lt;&lt;num0-num1; cout&lt;&lt;num2; cout&lt;&lt;num0+num1; cout&lt;&lt;"idk whats wrong";</pre><p> 它打印:</p><pre> Hello world: 90/150 13/65 2/5 Process returned -1073741819 (0xC0000005) execution time. 2.608 s Press any key to continue.</pre><p> 這是代碼:<strong>主要:</strong></p><pre class="lang-cpp prettyprint-override"> #include &lt;iostream&gt; using namespace std; #import "Fraction.h" int main() { cout &lt;&lt; "Hello world;" &lt;&lt; endl, Fraction num0(90;150), Fraction num1(13;65); Fraction num2; cout&lt;&lt;num0; cout&lt;&lt;num1; cout&lt;&lt;num0-num1; cout&lt;&lt;num2; cout&lt;&lt;num0+num1; cout&lt;&lt;"idk whats wrong"; return 0; }</pre><p> <strong>分數 header:</strong></p><pre class="lang-cpp prettyprint-override"> #ifndef FRACTION_H #define FRACTION_H #include &lt;iostream&gt; using namespace std; class Fraction { public: Fraction(int num, int denom); Fraction(); Fraction reducedFraction(Fraction fract); Fraction operator+(const Fraction &amp;fraction); Fraction operator-(const Fraction &amp;fraction); Fraction&amp; operator= (const Fraction &amp;fraction); Fraction operator/(const Fraction &amp;fraction); Fraction operator*(const Fraction &amp;fraction); bool operator&lt;(const Fraction &amp;fraction); bool operator&gt;(const Fraction &amp;fraction); bool operator&lt;=(const Fraction &amp;fraction); bool operator&gt;=(const Fraction &amp;fraction); bool operator==(const Fraction &amp;fraction); friend ostream&amp; operator&lt;&lt;(ostream&amp; os, const Fraction&amp; fraction); friend istream&amp; operator&gt;&gt;(istream&amp; is, Fraction&amp; fraction); void setNum(int num); int getNum(); void setDenom(int denom); int getDenom(); virtual ~Fraction(); private: int num; int denom; int* arrN; int* arrD; int* arrC; }; #endif // FRACTION_H</pre><p> <strong>分數.cpp</strong></p><pre> #include "Fraction.h" Fraction::Fraction() { num=1; denom=1; } Fraction::Fraction(int num,int denom) { this-&gt;num=num; this-&gt;denom = denom; } void Fraction::setNum(int num) { this-&gt;num = num; } void Fraction::setDenom(int denom) { this-&gt;denom = denom; } int Fraction::getDenom() { return denom; } int Fraction::getNum() { return num; } Fraction Fraction::operator+(const Fraction&amp; fraction) { Fraction tmp; tmp.num=(this-&gt;num*fraction.denom)+(fraction.num*this-&gt;denom); tmp.denom =this-&gt;denom*fraction.denom; return reducedFraction(tmp); } Fraction Fraction::operator-(const Fraction &amp;fraction) { Fraction tmp; tmp.num=(this-&gt;num*fraction.denom)-(fraction.num*this-&gt;denom); tmp.denom =this-&gt;denom*fraction.denom; return reducedFraction(tmp); } Fraction Fraction::operator*(const Fraction &amp;fraction){ Fraction tmp; tmp.num=this-&gt;num*fraction.num; tmp.denom=this-&gt;denom*fraction.denom; return reducedFraction(tmp); } Fraction Fraction::operator/(const Fraction &amp;fraction){ Fraction tmp; tmp.num=this-&gt;num*fraction.denom; tmp.denom=this-&gt;denom*fraction.num; return reducedFraction(tmp); } bool Fraction::operator==(const Fraction &amp;fraction){ if((this-&gt;num/this-&gt;denom)==(fraction.num/fraction.denom)){ return true; } else { return false; } } bool Fraction::operator&gt;(const Fraction &amp;fraction){ if((this-&gt;num/this-&gt;denom)&gt;(fraction.num/fraction.denom)){ return true; } else { return false; } } bool Fraction::operator&lt;(const Fraction &amp;fraction){ if((this-&gt;num/this-&gt;denom)&lt;(fraction.num/fraction.denom)){ return true; } else { return false; } } bool Fraction::operator&gt;=(const Fraction &amp;fraction){ if((this-&gt;num/this-&gt;denom)&gt;=(fraction.num/fraction.denom)){ return true; } else { return false; } } bool Fraction::operator&lt;=(const Fraction &amp;fraction){ if((this-&gt;num/this-&gt;denom)&lt;=(fraction.num/fraction.denom)){ return true; } else { return false; } } Fraction&amp; Fraction::operator= (const Fraction &amp;fraction) { this-&gt;num=fraction.num; this-&gt;denom = fraction.denom; return *this; } ostream&amp; operator&lt;&lt;(ostream&amp; os, const Fraction&amp; fraction) { os&lt;&lt;fraction.num&lt;&lt;"/"&lt;&lt;fraction.denom&lt;&lt;endl; return os; } Fraction Fraction::reducedFraction( Fraction fract) { int* arrN = new int[fract.num]; int* arrD = new int[fract.denom]; int* arrC; int countN=0; int countD=0; for (int i = 2; i&lt;=fract.num; i++) { if (fract.num%i==0) { arrN[countN]=i; countN++; } } for (int i = 2; i&lt;=fract.denom; i++) { if (fract.denom%i==0) { arrD[countD]=i; countD++; } } if (countN&gt;=countD) { arrC = new int[countN]; } else { arrC = new int[countD]; } int countC =0; for ( int i = 0; i &lt;countN; i++) { for (int j=0; j&lt;countD; j++) { if(arrN[i]==arrD[j]) { arrC[countC]=arrN[i]; countC++; } } } int maxN = arrC[0]; for ( int i =1; i&lt;countC; i++) { if (arrC[i]&gt;maxN) { maxN=arrC[i]; } } Fraction tmp; tmp.num = fract.num/maxN; tmp.denom=fract.denom/maxN; return tmp; } Fraction::~Fraction() { delete[]arrC; delete[]arrN; delete[]arrD; }</pre> </div></num0+num1?<> 為什么我的代碼需要 cout 才能使 printf() 工作? 為什么 cout 在這段代碼中打印“2 + 3 = 15”? std :: cout &lt;&lt; std :: cin做什么?
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM