作品中没有名为“oeuvre”的成员

问题描述 投票:0回答:1
class Oeuvre {  
    private:
        string titre;
        Auteur& auteur;
        string langue;
    [...]
};
    
class Exemplaire {
    private:
        Oeuvre& oeuvre;
    
    public:
        Exemplaire(Oeuvre& oeuvre) : oeuvre(oeuvre) {
            cout << "Nouvel exemplaire de : " << oeuvre.getTitre() << ", " << oeuvre.getAuteur().getNom() << "en " << oeuvre.getLangue() << endl;
            }
        
        **Exemplaire(Oeuvre const& autre) : oeuvre(autre.oeuvre) {
            cout << "Copie d'un exemplaire de : " << oeuvre.getTitre() << ", " << oeuvre.getAuteur().getNom() << "en " << oeuvre.getLangue() << endl;
                }**     
        
        ~Exemplaire() {
            cout << "Un exemplaire de \" " << oeuvre.getTitre() << ", " << oeuvre.getAuteur().getNom() << "en " << oeuvre.getLangue() << " \" a été jeté " << endl;
            }
        
        Oeuvre& getOeuvre () const {return oeuvre;}
        void affiche () {
            cout << "Exemplaire de : " << oeuvre.getTitre() << ", " << oeuvre.getAuteur().getNom() << "en " << oeuvre.getLangue() << endl;
            }
};

错误:作品中没有名为“oeuvre”的成员。

Exemplaire 的复制构造函数中存在问题。

c++ copy-constructor member
1个回答
0
投票

如果您想要一个复制构造函数,则复制构造函数必须采用同一类的实例作为参数。所以,改变吧

Exemplaire(Oeuvre const& autre) : oeuvre(autre.oeuvre)

Exemplaire(Exemplaire const& autre) : oeuvre(autre.oeuvre)

现在,

autre
是一个
Exemplaire
,它有一个
oeuvre
成员。

© www.soinside.com 2019 - 2024. All rights reserved.