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.


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.


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"

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.