错误:“ std :: __ cxx11 :: string Fonction :: fct”在此上下文中是私有的

有我的.hpp:

#include <string>
#include <iostream>

using namespace std;

#ifndef FONCTION_HPP
#define FONCTION_HPP

class Fonction{
    private:
        string fct;
        string drv;
    public:
        Fonction(string s) : fct(s+"(.)"), drv(s+"'(.)") {}
        Fonction(string s, string t) : fct(s+"(.)"), drv(t+"(.)") {}
        Fonction(int n) : fct("(.)^" + to_string(n)), drv(to_string(n)+"*(.)^4") {if(n==0){fct="1"; drv="0";} if(n==1){fct="(.)"; drv="1";}}
        string derivee() { return drv;}
        friend std::ostream & operator<<(std::ostream &, const Fonction &);
        friend Fonction operator+(const Fonction &, const Fonction &);
        friend Fonction operator*(const Fonction &, const Fonction &);

};



#endif

和我的.cpp:

#include "fonction.hpp"


ostream & operator<<(ostream & o, const Fonction & f){
    o << "La fonction " << f.fct << " a pour dérivée " << f.drv << endl;
    return o;
}

Fonction operator+(const Fonction & f, const Fonction & g){
    Fonction h(f.fct + " " + g.fct, f.drv + " " + g.drv);
    return h;
}

编译时出现以下错误:

fonction.cpp:10:15:错误:“ std :: __ cxx11 :: string Fonction :: fct”为   在这种情况下是私人的

对于该行:

Fonction h(f.fct + " " + g.fct, f.drv + " " + g.drv);

我在运算符+原型中添加了“朋友”,所以我不明白为什么会有这个错误。和朋友一起,我通常可以使用私有属性。

评论