cout не є членом std


199

Я практикую використання файлів mulitple та заголовків тощо. Отже, у мене є проект, який займає два числа, а потім додає їх. Досить просто.

Ось мої файли:

main.cpp

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

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

    writeAnswer(x + y);

    return(0);
}

іо.cpp

int readNumber()
{
    int x;

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

    return x;
}

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

дод

#ifndef ADD_H_INCLUDED
#define ADD_H_INCLUDED

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

#endif // #ifndef ADD_H_INCLUDED

Помилка відображається в io.cpp. Точні помилки:

введіть тут опис зображення

Хтось має уявлення, чому це може статися? Дякую.

EDIT: Я зробив невеликий проект вчора з однаковою кількістю файлів (2 .cpp і 1.h), і не включив заголовка iostream в інший .cpp, і він все ще компілювався і працював нормально.


3
Повторіть редагування: тоді ви склали цей проект по-іншому. Включення iostream у ваш другий файл cpp потрібно, як у вас є тут. Можливо, у вас було те, що було включено у .hфайл востаннє.
Мат

Так, зараз це чудово працює, дякую за швидку відповідь усім! :)
Пол Ханнон

2
завжди включайте файли заголовків системи після локальних файлів.
Вінсент

Відповіді:


317

додати #include <iostream>до початку io.cppтеж.


5
iostream повинен бути включений (прямо чи опосередковано). Інакше як би компілятор знав, де знайти std :: cout.
АК

1
Я розумію, що ти кажеш. Дякую. Хоча як я дістав свою другу програму. працювати, не включаючи його в інший .cpp теж? Я оновив ОП внизу.
Пол Ханнон

1
Ви, ймовірно, включили це побічно. ВИНАГО потрібно.
Себастьян Гофман

2
Мені потрібно було також включити його у .h файл !! Дякую
користувач391339

3
також він повинен бути включений після stdafx.h, не раніше
Алекс

16

Також пам’ятайте, що це повинно бути:

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

а не навпаки

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

1
Звідки береться "stdafx.h"? ОП не використовує таких заголовків
KABoissonneault

У мене була така ж помилка, і я намагався обміняти місця, щоб вони були нормальними.
Алі Ахмадванд

1

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

Оскільки я також використовував бібліотеку zmq, мені довелося додати це також до включених бібліотек.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.