2017-09-24 1 views
-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; 
} 
+5

기능 서명을 다시 확인하십시오. – user0042

+0

링커는 헤더에서와 같이'Zfraction fraction' 매개 변수를 사용하는 연산자를 찾고 있지만'Zfraction const & une_fraction'을 사용하는 연산자 만 찾습니다. 그래서 그렇게 될 수는 없지, 그렇지? –

답변

1
std::ostream& operator<<(std::ostream &flux, Zfraction const& une_fraction) 

이것은 구현에서 함수 헤더입니다

여기 내 헤더입니다.

std::ostream& operator<<(std::ostream &flux, Zfraction fraction); 

이것은 헤더에 있습니다. 최종 논증이 일치하지 않음을 알 수 있습니다.

관련 문제