cout ist kein std std

198

Ich übe die Verwendung mehrerer Dateien und Header-Dateien usw. Ich habe also dieses Projekt, das zwei Zahlen verwendet und diese dann hinzufügt. Ziemlich einfach.

Hier sind meine Dateien:

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

Der Fehler wird in io.cpp angezeigt. Die genauen Fehler sind:

Geben Sie hier die Bildbeschreibung ein

Hat jemand eine Idee, warum dies passieren kann? Vielen Dank.

BEARBEITEN: Ich habe gestern ein kleines Projekt mit der gleichen Anzahl von Dateien (2 .cpp und 1.h) erstellt und den iostream-Header nicht in die andere .cpp aufgenommen, und es wurde immer noch kompiliert und lief einwandfrei.

Paul Hannon
quelle
3
Zu Ihrer Bearbeitung: Dann haben Sie das Projekt anders kompiliert. Das Einfügen von iostream in Ihre zweite cpp-Datei ist erforderlich, da Sie es hier haben. Vielleicht hatten Sie das .hletzte Mal in der Datei.
Mat
Ja, es funktioniert jetzt großartig, danke für die schnellen Antworten an alle! :)
Paul Hannon
2
Fügen Sie immer Systemheaderdateien nach Ihren lokalen Dateien ein.
Vincent

Antworten:

315

#include <iostream>zum Anfang von hinzufügen io.cpp.

unkulunkulu
quelle
5
iostream muss (direkt oder indirekt) enthalten sein. Wie würde der Compiler sonst wissen, wo sich std :: cout befindet?
AK
1
Ich verstehe was du sagst. Vielen Dank. Aber wie habe ich mein anderes Projekt bekommen? arbeiten, ohne es auch in die andere .cpp aufzunehmen? Ich habe OP unten aktualisiert.
Paul Hannon
1
Sie haben es wahrscheinlich indirekt aufgenommen. Es ist IMMER erforderlich.
Sebastian Hoffmann
2
Ich musste es auch in eine .h-Datei aufnehmen !! Danke
user391339
3
auch muss es nach stdafx.h, nicht vor
Alex
15

Denken Sie auch daran, dass es sein muss:

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

und nicht umgekehrt

#include <iostream>
#include "stdafx.h"
Jukes
quelle
1
Woher kommt "stdafx.h"das? OP verwendet keine solchen Header
KABoissonneault
Ich hatte den gleichen Fehler und versuchte, ihre Plätze auszutauschen, um in Ordnung zu sein.
Ali Ahmadvand
1

Ich hatte ein ähnliches Problem und es stellte sich heraus, dass ich einen zusätzlichen Eintrag hinzufügen musste, um cmakedie Dateien einzuschließen.

Da ich auch die zmq-Bibliothek verwendete, musste ich diese auch zu den enthaltenen Bibliotheken hinzufügen.

Marco Rubio
quelle