Let's say that I have a simple program that doubles a number entered by the user, and outputs the result on the screen.
Here is my main.cpp
#include "double.h"
int main()
{
int nUserNumber=GetNumber();
int nDoubleNumber=DoubleNumber(nUserNumber);
PrintResult(nDoubleNumber);
return 0;
}
Here is double.h
#ifndef _IOSTREAM_
#define _IOSTREAM_
#include <iostream>
#endif
#ifndef GETNUMBER
#define GETNUMBER
int GetNumber();
#endif
#ifndef DOUBLENUMBER
#define DOUBLENUMBER
int DoubleNumber(int nUserNumber);
#endif
#ifndef PRINTRESULT
#define PRINTRESULT
int PrintResult(int nDoubleNumber);
#endif
Here is getnumber.cpp
#include "double.h"
int GetNumber()
{
int nUserNumber=0;
std::cout<<"Please enter a number: ";
std::cin>>nUserNumber;
return nUserNumber;
}
Here is doublenumber.cpp:
#include "double.h"
int DoubleNumber(int nUserNumber)
{
return nUserNumber*2;
}
And lastly, printresult.cpp:
#include "double.h"
void PrintResult(int nDoubleNumber)
{
std::cout<<nDoubleNumber;
}
The reason I add iostream to my header file instead of main.cpp is that GetNumber and PrintResult needs it for cin and cout. My question is whether this is good practice or not, or something that I should solve in a different way? The program runs without any errors, but I am concerned about not picking up any bad habits along the way