-2
devC++로 코딩 한 im이 오류는 "$ (CPP) $ (LINKOBJ) -o $ (BIN) $ (LIBS)"입니다. 프로젝트를 컴파일 할 때`operator < < (std :: ostream &, Zfraction)에 대한 정의되지 않은 참조와 함께 makefile.win 파일이 생성되었습니다! 이상한 일은 연산자 코드를 추가하기 몇 시간 전에 작업 한 코드입니다. 컴파일러 나 다른 문제입니까?`operator << (std :: ostream &, Zfraction) '에 대한 정의되지 않은 참조'
#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'을 사용하는 연산자 만 찾습니다. 그래서 그렇게 될 수는 없지, 그렇지? –