219

I'm practicing using mulitple files and header files etc. So I have this project which takes two numbers and then adds them. Pretty simple.

Here are my files:

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

The error is showing up in io.cpp. The exact errors are:

enter image description here

Does anyone have any idea why this may be happening? Thanks.

EDIT: I made a small project yesterday with the same amount of files (2 .cpp and 1.h) and I didn't include the iostream header in the other .cpp and it still compiled and ran fine.

Ernestas Gruodis
  • 7,563
  • 12
  • 45
  • 104
Paul Hannon
  • 2,213
  • 2
  • 10
  • 5
  • 3
    Re your edit: then you compiled that project differently. Including iostream in your second cpp file is **required** as you have it here. Maybe you had that include in the `.h` file last time around. – Mat Jul 07 '12 at 14:58
  • Yeah, it's working great now, thanks for the quick responses everyone! :) – Paul Hannon Jul 07 '12 at 15:01
  • 2
    always include system header files after your local files. – Vincent Jun 06 '17 at 13:42

3 Answers3

368

add #include <iostream> to the start of io.cpp too.

unkulunkulu
  • 10,526
  • 2
  • 27
  • 47
18

Also remember that it must be:

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

and not the other way around

#include <iostream>
#include "stdafx.h"
Jukes
  • 327
  • 2
  • 4
1

I had a similar issue and it turned out that i had to add an extra entry in cmake to include the files.

Since i was also using the zmq library I had to add this to the included libraries as well.