如何正确声明命名空间函数

How do I declare namespace functions correctly

本文关键字:函数 命名空间 声明 何正确      更新时间:2023-10-16

我以为我遵循了其他线程的逻辑,但

namespace Geometry {
class Vector2D {
    public:
        Vector2D(float x_, float y_) : x(x_), y(y_) {}
        float x;
        float y;
}
Vector2D operator+(const Vector2D &lhs, const Vector2D &rhs) {
    return Vector2D(lhs.x + rhs.x, lhs.y + rhs.y);
}
}

没有编译,我得到错误

error: no matching constructor for initialization of 'class Vector2D'
Vector2D operator+(const Vector2D &lhs, const Vector2D &rhs) {
error: expected ';' after top level declarator
Vector2D operator+(const Vector2D &lhs, const Vector2D &rhs) {

所以编译器似乎认为我在二进制"+"上的运算符重载是变量的delcaration?

啊,你少了一个分号!