여러 매개 변수로 함수를 오버로드하는 방법은 무엇입니까? C ++

user2831805

제 질문은 HW 할당에 관한 것입니다. 나는 해결책없이 선생님에게 연락하여 (응답하지 않음) Google을 시도했습니다.

기본적으로 헤더 파일에 두 개의 매개 변수가있는 함수를 오버로드해야합니다.

이것과 매우 유사합니다.-> 연산자가이 함수에 너무 많은 매개 변수를 사용합니까?

하지만 어떤 이유로 친구를 추가하면 컴파일되지 않습니다.

여기에 과부하가 필요한 기능 중 하나가 있습니다.

Rational.cpp

     bool reduceFractions(numbers &fractions) {
        bool answer;

        for (int i = fractions.numerator; i >= 2; i--) {       //This will keep running until i = the GFC for both numerator & denominator
            if ((((fractions.numerator % i) == 0) && (fractions.denominator % i) == 0)) {

                fractions.numerator /= i;
                fractions.denominator /= i;
                answer = true;
            }
        }

        answer = false;
        return answer;

    }

    //Adding fractions
    numbers operator+(numbers firstFraction, numbers secondFraction) {
        numbers holdFraction1, holdFraction2, someAnswers;

        //Multiply to get same denominator
        holdFraction1.denominator = firstFraction.denominator   *   secondFraction.denominator;
        holdFraction2.denominator = firstFraction.denominator   *   secondFraction.denominator;

        //Numerator multiplication to match new denominator
        holdFraction1.numerator = firstFraction.numerator     *   secondFraction.denominator;
        holdFraction2.numerator = secondFraction.numerator    *   firstFraction.denominator;

        //Adding the fractions
        someAnswers.numerator = holdFraction1.numerator + holdFraction2.numerator;
        someAnswers.denominator = holdFraction2.denominator;

        //Reduce fractions 
        while (reduceFractions(someAnswers));

        return someAnswers;
    }

istream& operator >> (istream &in, numbers &fraction) {
    char slash;
    return in >> fraction.numerator >> slash >> fraction.denominator;
    } 

    ostream& operator << (ostream& out, numbers fraction) {

        return out << fraction.numerator << "/" << fraction.denominator;
    }

Rational.h

    ##ifndef Rational
#define Rational


struct numbers {
    int numerator;
    int denominator;
};



class Math
{

private:
    numbers first, second;



public:
    Math();
    friend numbers operator+(numbers firstFraction, numbers secondFraction);
friend istream& operator >>(istream& in, numbers& fraction);
    friend ostream& operator<< (ostream& out, numbers fraction);
};


#endif

Driver.cpp 메인이 여기에 있습니다.

#include <iostream>
using namespace std;
#include "Rational.h"




    int main() {
        numbers firstFraction, secondFraction, answerFraction;

        cout << "Enter first fraction (format a/b)";
        cin >> firstFraction;
        cout << "Enter second fraction (format a/b)";
        cin >> secondFraction;

        answerFraction = firstFraction + secondFraction;

        cout << answerFraction;


        system("Pause");

        return 0;

    }

^^^ 은 함수에 과부하가 걸리지 않는 것 같습니다. 나에게 컴파일 오류가 발생합니다.

이 오류와 몇 가지 다른 오류가 발생합니다.

Error   1   error LNK2005: "struct numbers __cdecl operator+(struct numbers &,struct numbers &)" (??H@YA?AUnumbers@@AAU0@0@Z) already defined in Driver.obj C:\Users\JeanLuis\Documents\Visual Studio 2013\Projects\Project1\Project1\Rational.obj  Project1

친구를 데리고 나가면 매개 변수가 너무 많다는 메시지가 ...

내가 뭘 잘못하고 있니?

좀 더 명확하게 만들었 으면 좋겠습니다.

데이비드

그래서 당신의 서명이 일치하지 않기 때문인 것 같습니다.

당신은 :

friend numbers operator+(numbers firstFraction, numbers secondFraction);
friend istream& operator >>(istream& in, numbers& fraction);
friend ostream& operator<< (ostream& out, numbers fraction);

그러나 실제 기능은 다음과 같습니다.

numbers operator+(numbers &firstFraction, numbers &secondFraction) // BAD
istream& operator >> (istream &in, numbers &fraction) // GOOD
ostream& operator << (ostream& out, numbers &fraction) // BAD

참조 연산자가 어떻게 일치하지 않는지 아십니까? 이를 수정하고 컴파일 할 수 있는지 확인하십시오. 표시된 것과 같은 이상한 복잡한 오류는 종종 서명 불일치와 같은 이유로 인해 발생합니다.


댓글 관련 편집

.h 더하기

#include <iostream>
using namespace std;

.cpp 추가

#include "test2.h"
#include <iostream>
using namespace std;

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

선택적 매개 변수 만있는 함수에 대해 여러 오버로드를 정의하는 방법은 무엇입니까?

분류에서Dev

여러 매개 변수 / 옵션으로 bash 함수를 완료하는 방법은 무엇입니까?

분류에서Dev

선택적 매개 변수로 TypeScript의 함수를 오버로드하는 방법은 무엇입니까?

분류에서Dev

C 소개-함수에서 참조로 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

gekko로 매개 변수를 조정하여 오버 슈트를 해결하는 방법은 무엇입니까?

분류에서Dev

동적 링크 함수 jquery 함수 C #에서 여러 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

여러 목록 값을 함수 매개 변수로 전달하는 방법은 무엇입니까?

분류에서Dev

C에서 매개 변수로 구조체 포인터를 사용하여 void 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

함수를 C ++에서 매개 변수로 전달하는 방법은 무엇입니까?

분류에서Dev

C ++의 함수에서 배열 요소를 매개 변수로 전달하는 방법은 무엇입니까?

분류에서Dev

함수의 매개 변수를 C ++에서 포인터로 사용하여 DLL에서 값을 반환하는 방법은 무엇입니까?

분류에서Dev

여러 매개 변수로 프로 시저를 호출하는 방법은 무엇입니까?

분류에서Dev

여러 출력 매개 변수로 프로 시저를 작성하는 방법은 무엇입니까?

분류에서Dev

포함 절을 사용하여 여러 매개 변수를 쿼리하는 방법은 무엇입니까?

분류에서Dev

여러 매개 변수를 사용하여 변형 함수를 안정적으로 감싸는 방법은 무엇입니까?

분류에서Dev

KeyDown 함수 C #의 매개 변수로 텍스트 상자를 보내는 방법은 무엇입니까?

분류에서Dev

C의 매개 변수로 여러 매개 변수가있는 함수에 대한 포인터를 받아들이고 호출하는 방법은 무엇입니까?

분류에서Dev

여러 매개 변수가있는 경로를 생성하는 방법은 무엇입니까?

분류에서Dev

여러 매개 변수로 길이 계산 결과를 저장하는 방법은 무엇입니까?

분류에서Dev

오버로드없이 호출을 위해 템플릿에 여러 매개 변수를 만드는 방법은 무엇입니까?

분류에서Dev

C ++ STL 라이브러리를 사용하여 const char [] 배열을 constexpr 템플릿 매개 변수로 전달하는 방법은 무엇입니까?

분류에서Dev

매개 변수를 전달하여 C #의 코드를 병합하는 방법은 무엇입니까?

분류에서Dev

WEBLOGIC 서버에서 JSP (Java 코드 포함)를 업로드하여 Consumers Current 및 Messages Total 큐 매개 변수를 얻는 방법은 무엇입니까?

분류에서Dev

C에서 함수를 오버로드하는 방법은 무엇입니까?

분류에서Dev

함수 이름과 매개 변수를 변수로 사용하여 적절한 함수를 호출하는 방법은 무엇입니까? PHP

분류에서Dev

유형이 아닌 매개 변수가있는 C ++ 템플릿 클래스 : 할당 연산자를 오버로드하는 방법은 무엇입니까?

분류에서Dev

함수 이름과 매개 변수를 매개 변수로 전달하는 방법은 무엇입니까?

분류에서Dev

C ++ : 가변 템플릿 인수에서 유형 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

여러 쿼리 매개 변수로 URL의 URL을 다시 작성하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    선택적 매개 변수 만있는 함수에 대해 여러 오버로드를 정의하는 방법은 무엇입니까?

  2. 2

    여러 매개 변수 / 옵션으로 bash 함수를 완료하는 방법은 무엇입니까?

  3. 3

    선택적 매개 변수로 TypeScript의 함수를 오버로드하는 방법은 무엇입니까?

  4. 4

    C 소개-함수에서 참조로 매개 변수를 전달하는 방법은 무엇입니까?

  5. 5

    gekko로 매개 변수를 조정하여 오버 슈트를 해결하는 방법은 무엇입니까?

  6. 6

    동적 링크 함수 jquery 함수 C #에서 여러 매개 변수를 전달하는 방법은 무엇입니까?

  7. 7

    여러 목록 값을 함수 매개 변수로 전달하는 방법은 무엇입니까?

  8. 8

    C에서 매개 변수로 구조체 포인터를 사용하여 void 함수를 호출하는 방법은 무엇입니까?

  9. 9

    함수를 C ++에서 매개 변수로 전달하는 방법은 무엇입니까?

  10. 10

    C ++의 함수에서 배열 요소를 매개 변수로 전달하는 방법은 무엇입니까?

  11. 11

    함수의 매개 변수를 C ++에서 포인터로 사용하여 DLL에서 값을 반환하는 방법은 무엇입니까?

  12. 12

    여러 매개 변수로 프로 시저를 호출하는 방법은 무엇입니까?

  13. 13

    여러 출력 매개 변수로 프로 시저를 작성하는 방법은 무엇입니까?

  14. 14

    포함 절을 사용하여 여러 매개 변수를 쿼리하는 방법은 무엇입니까?

  15. 15

    여러 매개 변수를 사용하여 변형 함수를 안정적으로 감싸는 방법은 무엇입니까?

  16. 16

    KeyDown 함수 C #의 매개 변수로 텍스트 상자를 보내는 방법은 무엇입니까?

  17. 17

    C의 매개 변수로 여러 매개 변수가있는 함수에 대한 포인터를 받아들이고 호출하는 방법은 무엇입니까?

  18. 18

    여러 매개 변수가있는 경로를 생성하는 방법은 무엇입니까?

  19. 19

    여러 매개 변수로 길이 계산 결과를 저장하는 방법은 무엇입니까?

  20. 20

    오버로드없이 호출을 위해 템플릿에 여러 매개 변수를 만드는 방법은 무엇입니까?

  21. 21

    C ++ STL 라이브러리를 사용하여 const char [] 배열을 constexpr 템플릿 매개 변수로 전달하는 방법은 무엇입니까?

  22. 22

    매개 변수를 전달하여 C #의 코드를 병합하는 방법은 무엇입니까?

  23. 23

    WEBLOGIC 서버에서 JSP (Java 코드 포함)를 업로드하여 Consumers Current 및 Messages Total 큐 매개 변수를 얻는 방법은 무엇입니까?

  24. 24

    C에서 함수를 오버로드하는 방법은 무엇입니까?

  25. 25

    함수 이름과 매개 변수를 변수로 사용하여 적절한 함수를 호출하는 방법은 무엇입니까? PHP

  26. 26

    유형이 아닌 매개 변수가있는 C ++ 템플릿 클래스 : 할당 연산자를 오버로드하는 방법은 무엇입니까?

  27. 27

    함수 이름과 매개 변수를 매개 변수로 전달하는 방법은 무엇입니까?

  28. 28

    C ++ : 가변 템플릿 인수에서 유형 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

  29. 29

    여러 쿼리 매개 변수로 URL의 URL을 다시 작성하는 방법은 무엇입니까?

뜨겁다태그

보관