zoukankan      html  css  js  c++  java
  • 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); //这才是真正的声明
    

      

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

  • 相关阅读:
    ntpdate
    动态查看日志
    eclipse proxy
    远程调试
    pe and elf
    03scikit-learn非监督学习
    15管家婆小项目
    02scikit-learn模型训练
    01scikit-learn数据集下载
    scikit-learn中文api
  • 原文地址:https://www.cnblogs.com/corineru/p/11983479.html
Copyright © 2011-2022 走看看