65

coutすべてのおよびに対して次のエラー メッセージが表示されますendl

main.cc:17:5: error: ‘cout’ was not declared in this scope
main.cc:17:5: note: suggested alternative:
/usr/include/c++/4.6/iostream:62:18: note:   ‘std::cout’

提案に従った後、すべて問題ありません。今、私は興味があります、なぜ私はそれをしなければならなかったのですか?以前はクラスで C++ を使用していましたがstd::、これらのコマンドの前に a を記述する必要はありませんでした。このシステムでは何が違うのでしょうか?

4

7 に答える 7

128

クラスが標準化前の C++ を使用していた可能性があります。見分ける簡単な方法は、古いプログラムを調べて確認することです。

#include <iostream.h>

また

#include <iostream>

前者はプレスタンダードであり、何も追加せずcoutに単に言うことができます. std::cout追加することにより、標準 C++ で同じ動作を得ることができます。

using std::cout;

また

using namespace std;

とにかく、ただ一つのアイデア。

于 2012-06-08T13:49:39.383 に答える
24

C++ 標準でcoutは、名前空間で定義されているstdため、言うstd::coutか置く必要があります。

using namespace std;

それを取得するためにあなたのコードで。

ただし、常にそうであるとは限らず、以前coutはグローバル名前空間 (または、後でグローバルと の両方std) だけにありました。したがって、あなたのクラスは古い C++ コンパイラを使用していたと結論付けます。

于 2012-06-08T13:49:12.347 に答える
13

標準テンプレート/Iostream ライブラリのすべては、名前空間 std にあります。あなたはおそらく使用したことがあります:

using namespace std;

あなたのクラスで、それがうまくいった理由です。

于 2012-06-08T13:48:02.980 に答える
7

名前空間を使用できます

http://www.daniweb.com/software-development/cpp/threads/109029/what-its-the-use-of-using-namespace-std

しかし、あなたは誰かを怒らせるかもしれません

「名前空間 std の使用」が悪い習慣と見なされるのはなぜですか?

于 2012-06-08T13:51:51.873 に答える
3

おそらくusing namespace std;、クラスで行ったコードで以前に行ったことがあるでしょう。これは、プリコンパイラに 内のシンボルを探すように明示的に指示します。つまり、 を探すstd必要はありませんstd::std::cout代わりに、毎回cout明示的に呼び出すことをお勧めします。std::coutそうすれば、 を再定義する別のライブラリを使用しているcout場合でも、std::cout他のカスタム動作の代わりに動作が維持されます。

于 2012-06-08T13:49:48.673 に答える
1

「std」は、STL (Standard Template Library) で使用される名前空間です。https://en.wikipedia.org/wiki/Namespace#Use_in_common_languagesを参照してください

using namespace std;stl 関数、変数を使用する前に書き込むか、std::それらの前に挿入することができます。

于 2012-06-08T13:51:43.767 に答える