<分区>
我正在尝试为我的项目使用单独的文件,包括声明类方法的头文件和用于定义方法的 .cpp 文件。
但是,强制执行隐藏方法实现时出现错误并且无法编译代码。
文件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
文件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;
}
文件源.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;
}
最后我得到:
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')