coutはstdのメンバーではありません


199

複数のファイルやヘッダーファイルなどを使用して練習しています。そのため、このプロジェクトでは2つの数値を取り、それらを加算しています。ものすごく単純。

これが私のファイルです:

main.cpp

#include <iostream>
#include "add.h"

int main()
{
    int x = readNumber();
    int y = readNumber();

    writeAnswer(x + y);

    return(0);
}

io.cpp

int readNumber()
{
    int x;

    std::cout << "Number: ";
    std::cin >> x;

    return x;
}

void writeAnswer(int x)
{
    std::cout << "Answer: ";
    std::cout << x;
}

add.h

#ifndef ADD_H_INCLUDED
#define ADD_H_INCLUDED

int readNumber();
void writeAnswer(int x);

#endif // #ifndef ADD_H_INCLUDED

エラーはio.cppに表示されます。正確なエラーは次のとおりです。

ここに画像の説明を入力してください

なぜこれが起こっているのか誰か誰か知っていますか?ありがとう。

編集:私は昨日、同じ量のファイル(2 .cppと1.h)を使用して小さなプロジェクトを作成しました。他の.cppにiostreamヘッダーを含めなかったのですが、コンパイルされて正常に実行されました。


3
編集をやり直します。そのプロジェクトを別の方法でコンパイルしました。ここにあるため、2番目のcppファイルにiostreamを含める必要があります。たぶん、あなたはそれを.h前回ファイルに含めたでしょう。
マット

ええ、それは今、素晴らしい働きをしています。:)
ポールハノン

2
常にローカルファイルの後にシステムヘッダーファイルを含めます。
Vincent

回答:


317

あまりにも#include <iostream>最初に追加しio.cppます。


5
iostreamを(直接または間接的に)含める必要があります。そうでない場合、コンパイラはstd :: coutの場所をどのようにして知るでしょう
AK

1
あなたの言っていることが理解できます。ありがとう。どのように私は私の他のプロジェクトを手に入れましたか?他の.cppにも含めずに動作するには?下部のOPを更新しました。
ポールハノン2012

1
間接的に含まれている可能性があります。常に必要です。
セバスチャンホフマン

2
私もそれを.hファイルに含める必要がありました!! ありがとう
user391339 14

3
また、それはstdafx.h前ではなく後に、含まれる必要があります
アレックス

16

また、次のようにする必要があります。

#include "stdafx.h"
#include <iostream>

逆ではありません

#include <iostream>
#include "stdafx.h"

1
どこ"stdafx.h"から来たの?OPはそのようなヘッダーを使用しません
KABoissonneault

私は同じエラーがあり、私は彼らの場所を大丈夫に交換しようとしました。
Ali Ahmadvand 2018年

1

私は同様の問題があり、それに余分なエントリを追加する必要があることがわかりました cmake、ファイルを含めるためにた。

私もzmqライブラリを使用していたので、これも含まれているライブラリに追加する必要がありました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.