Apr 20, 2013 at 1:22am UTC
I'm getting this error
.../Game/point.h:11: error: unknown type name 'Vector'
Point AddVector(Vector v);
^
What am I missing?
Main.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#include <iostream>
#include "vector.h"
#include "point.h"
int main(void )
{
Point p;
p.x = 1;
p.y = 0;
Vector v;
v.x = 2;
v.y = 3;
Point p2 = p.AddVector(v);
std::cout << "Result: (" << p2.x << ", " << p2.y << ")" << std::endl;
std::cin.get();
return 0;
}
Point.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#ifndef POINT_H
#define POINT_H
#include "vector.h"
class Point
{
public :
float x, y;
Point AddVector(Vector v);
};
#endif // POINT_H
Point.cpp
1 2 3 4 5 6 7 8 9 10 11 12
#include "point.h"
Point Point::AddVector(Vector v)
{
Point p2;
p2.x = x + v.x;
p2.y = y + v.y;
return p2;
}
Vector.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#ifndef VECTOR_H
#define VECTOR_H
#include "point.h"
class Vector
{
public :
float x, y;
Vector operator -(Point b);
};
#endif // VECTOR_H
Vector.cpp
1 2 3 4 5 6 7 8 9 10 11
#include "vector.h"
Vector Vector::operator -(Point b)
{
Vector v;
v.x = this ->x - b.x;
v.y = this ->y - b.y;
return v;
}
Last edited on Apr 20, 2013 at 1:51am UTC
Apr 20, 2013 at 1:39am UTC
In vector.cpp Line 3 there is no class named vector1. I think you need to use some forward declarations.
This compiles for me.
vector.cpp
1 2 3 4 5 6 7 8 9 10 11
#include "vector.h"
Vector Vector::operator -(Point b)
{
Vector v;
v.x = this ->x - b.x;
v.y = this ->y - b.y;
return v;
}
vector.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#ifndef VECTOR_H
#define VECTOR_H
#include "point.h"
class Point; //<--forward declaration
class Vector
{
public :
float x, y;
Vector operator -(Point b);
};
#endif // VECTOR
Point.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#ifndef POINT_H
#define POINT_H
#include "vector.h"
class Vector;//<---forward declaration
class Point
{
public :
float x, y;
Point AddVector(Vector v);
};
#endif /
Point.cpp
1 2 3 4 5 6 7 8 9 10 11 12
#include "point.h"
Point Point::AddVector(Vector v)
{
Point p2;
p2.x = x + v.x;
p2.y = y + v.y;
return p2;
}
Last edited on Apr 20, 2013 at 1:53am UTC
Apr 20, 2013 at 1:51am UTC
@Yanson,
Thank you for your help. You are right but this didn't solve the problem. At the beginning I though because I'm using vector as a name of a class that may somehow conflict with the standard vector class, so I rename the class as vector1 but I forgot to remove it here.
Apr 20, 2013 at 11:40pm UTC
@Yanson,
thank you so much. I missed this part and it worked now.