-2
即時編碼與dev C++和我得到這個錯誤「$(CPP)$(LINKOBJ)-o $(BIN)$(LIBS)」in makefile.win文件,當我編譯我的項目時,對'運算符< <(std :: ostream &,Zfraction)'的消息undefined引用!奇怪的是我的代碼在我添加運算符+之前幾個小時工作,是編譯器還是其他問題?對operator <<(std :: ostream&,Zfraction)'undefined的引用'
這裏是我的頭:
#ifndef DEF_FRACTION
#define DEF_FRACTION
#include <iostream>
class Zfraction
{
public:
Zfraction();
Zfraction(int m_numerateur, int m_denominateur);
Zfraction(int m_numerateur);
void afficher(std::ostream &flux) const;
Zfraction& operator+=(Zfraction const& fraction);
Zfraction add(Zfraction const& fraction) const;
private:
int m_numerateur;
int m_denominateur;
};
std::ostream& operator<<(std::ostream &flux, Zfraction fraction);
Zfraction operator+(Zfraction const& fraction1, Zfraction const& fraction2);
#endif
和我的cpp文件:
#include "Zfraction.h"
Zfraction::Zfraction()
{
m_numerateur=1;
m_denominateur=0;
}
Zfraction::Zfraction(int numerateur, int denominateur)
{
m_numerateur=numerateur;
m_denominateur=denominateur;
}
Zfraction::Zfraction(int numerateur)
{
m_numerateur=numerateur;
m_denominateur=1;
}
void Zfraction::afficher(std::ostream &flux) const
{
flux << m_numerateur<<"/"<<m_denominateur;
}
std::ostream& operator<<(std::ostream &flux, Zfraction const& une_fraction)
{
une_fraction.afficher(flux);
return flux;
}
Zfraction Zfraction::add(Zfraction const& fraction) const
{
Zfraction somme;
somme.m_numerateur=(m_numerateur*fraction.m_denominateur)+(m_denominateur*fraction.m_numerateur);
somme.m_denominateur=m_denominateur*fraction.m_denominateur;
return somme;
}
Zfraction operator+(Zfraction const& fraction1, Zfraction const& fraction2)
{
Zfraction resultat;
resultat = fraction1.add(fraction2);
return resultat;
}
再次檢查您的功能簽名。 – user0042
鏈接器正在尋找一個採用'Zfraction fraction'參數的操作符,就像在頭部一樣,但只能找到一個採用'Zfraction const&une_fraction'的操作符。所以它不可能是那個,可以嗎? –