• C++中友元函数编译出错,no match for operator *的问题


    最近在linux上编译C++的程序,发现很多明明已经实现了的友元类型的operator运算符总是提示 no match for operator xxx,也就是找不到函数的实现。

    但是把友元函数换成类成员函数就没有问题,这确实有点诡异。

    经过一番查找发现,原来在类中声明为友元函数的声明只是对权限的声明,因此需要在类定义外添加友元函数真正的声明。(虽然在VS中完全没问题,但是在linux下无法通过编译)

    class Expr
    {
    public:
           friend Expr operator+(const Expr& x, const Expr& y); //只是权限的声明
            
    }
    Expr operator+(const Expr& x, const Expr& y); //这才是真正的声明
    

      

    注意要在后面添加,在前面添加会提示该类没有定义的错误。

  • 相关阅读:
    把数组排成最小的数
    整数中1出现的次数
    连续子数组的最大和
    快速排序
    penCV入门
    OpenCV视频操作
    linux下导入oracle数据表
    js工作备注
    oracle创建默认表空间---重要
    oracle的导入导出
  • 原文地址:https://www.cnblogs.com/corineru/p/11983479.html
Copyright © 2020-2023  润新知