I'm trying to use separate files for my project, including header file, which declares class methods and .cpp file for defining methods.
But, enforcing hidden method implementation I get errors and can't compile code.
File vector.h
#ifndef VECTOR_H
#define VECTOR_H
#include <iostream>
class Point
{
private:
float x;
float y;
public:
Point(float x, float y);
float get_x() const;
float get_y() const;
};
#endif // VECTOR_H
File vector.cpp
#include "vector.h"
Point::Point(float x, float y): x(x), y(y) {}
float Point::get_x() const
{
return x;
}
float Point::get_y() const
{
return y;
}
Point operator+(Point& pt1, Point& pt2)
{
return {pt1.get_x() + pt2.get_x(), pt1.get_y() + pt2.get_y()};
}
std::ostream& operator<<(std::ostream& os, const Point& pt)
{
os << '(' << pt.get_x() << ', ' << pt.get_y() << ')';
return os;
}
File source.cpp
#include "vector.h"
int main()
{
Point p1(1.4, 2.324), p2(2.004, -4.2345);
std::cout << p1 << '\n';
std::cout << p2 << '\n';
std::cout << p1 + p2 << '\n';
return 0;
}
In the end I get:
error: no match for 'operator<<' (operand types are 'std::ostream' {aka 'std::basic_ostream<char>'} and 'Point')
error: no match for 'operator+' (operand types are 'Point' and 'Point')