cout не является членом std

200

Я тренируюсь с использованием нескольких файлов, заголовочных файлов и т. Д. Итак, у меня есть этот проект, который берет два числа и затем добавляет их. Довольно просто

Вот мои файлы:

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), и я не включил заголовок iostream в другой .cpp, и он все еще скомпилирован и работает нормально.

Пол Хэннон
источник
3
Пересмотрите ваши изменения: тогда вы скомпилировали этот проект по-другому. Включение iostream во второй cpp-файл необходимо, поскольку оно у вас есть. Может быть, вы включили это в .hфайл в прошлый раз.
Мат
Да, теперь все работает отлично, спасибо всем за быстрый ответ! :)
Пол Хэннон
2
всегда включайте системные заголовочные файлы после ваших локальных файлов.
Винсент

Ответы:

318

добавить #include <iostream>в начало io.cppтоже.

unkulunkulu
источник
5
iostream должен быть включен (прямо или косвенно). Иначе как бы компилятор узнал, где найти std :: cout.
АК
1
Я понимаю, что вы говорите. Спасибо. Хотя, как я получил мой другой проект. работать, не включая его в другой .cpp тоже? Я обновил ОП внизу.
Пол Хэннон
1
Вы, вероятно, включили это косвенно. Это ВСЕГДА требуется.
Себастьян Хоффманн
2
Мне нужно было включить его и в файл .h !! Спасибо
user391339
3
также это должно быть включено после stdafx.h, не раньше
Алекс
16

Также помните, что это должно быть:

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

а не наоборот

#include <iostream>
#include "stdafx.h"
Jukes
источник
1
Откуда "stdafx.h"берутся? ОП не использует таких заголовков
KABoissonneault
У меня была такая же ошибка, и я попытался обменять их места, чтобы быть в порядке.
Али Ахмадванд
1

У меня была похожая проблема, и оказалось, что мне нужно было добавить дополнительную запись, cmakeчтобы включить файлы.

Так как я также использовал библиотеку zmq, мне пришлось добавить это и во включенные библиотеки.

Марко Рубио
источник