Reputation: 2889
I am migrating from Java to C++. It seems that C++ makes classes declaration in separate files, difficult. So I need your help,
in my main.cpp:
#include "Sphere.h"
using namespace std;
.....
...
..
int main( void ) {
Sphere *earth = new Sphere(sphere_start ,sphere_end);
...
..
.
in my Sphere.h
class Sphere
{
public:
Sphere(int,int);
}
and in my Sphere.cpp
#include "Sphere.h"
using namespace std;
int sphere_start, sphere_end;
Sphere::Sphere (int a, int b)
{
sphere_start = a;
sphere_end = b;
}
void Sphere::render(int i)
{
....
..
.
}
This is the very basic code that I think causes the following error:
main.cpp:14:20: fatal error: Sphere.h: No such file or directory
compilation terminated.
why?
Upvotes: 4
Views: 34007
Reputation: 79780
You need to add to your compile command a path to where the header files can be found.
If your header is in the headers
directory add -Iheaders
:
g++ -o main.o -c -Iheaders main.cpp
g++ -o sphere.o -c -Iheaders sphere.cpp
g++ -o app main.o sphere.o -L.
Or whatever your files are ...
Upvotes: 6
Reputation: 357
You should post your command line, but my guess is that you should tell the path to the header files to the compiler. If you're using linux try this:
g++ main.cpp shpere.cpp -I<path_to_Sphere.h> -o main
Upvotes: 2
Reputation: 1912
Sphere.h must either be in the same directory as each file that includes it, or the compiler must be directed to search the directory in which Sphere.h is located.
Upvotes: 4
Reputation: 11312
Two potential errors:
Upvotes: 1