Operator= Overload 관련 질문
글쓴이: rymuff / 작성시간: 목, 2013/02/14 - 6:07오후
연산자= 오버로드를 통해
Flaction a;
int b;
변수 사이
a=b;
b=a;
가 가능하게 하고싶습니다.
아래와 같이 코드를 짜니
아래와 같은 에러가 발생했습니다.
static선언이나 friend같은 방법을 사용해봤지만 불가능하네요.
혹시 해결방법을 아시나요?
Flaction.h
class Flaction { int c, m; public: ... Flaction& operator =(const int& b); int& operator =(const Flaction& b); ... }
Flaction.cpp
... Flaction& Flaction::operator =(const int& b) { c = b; m = 1; return *this; } int& Flaction::operator =(const Flaction& b) { return (b.c / b.m); }
error
../src/Flaction.h:36: error: 'int& Flaction::operator=(const Flaction&)' cannot be overloaded ../src/Flaction.h:33: error: with 'Flaction& Flaction::operator=(const Flaction&)' ../src/Flaction.cpp:103: error: prototype for 'int& Flaction::operator=(const Flaction&)' does not match any in class 'Flaction' ../src/Flaction.cpp:94: error: candidates are: Flaction& Flaction::operator=(const double&) ../src/Flaction.cpp:87: error: Flaction& Flaction::operator=(const int&) ../src/Flaction.cpp:80: error: Flaction& Flaction::operator=(const Flaction&) ../src/Flaction.cpp:103: error: 'int& Flaction::operator=(const Flaction&)' cannot be overloaded ../src/Flaction.cpp:80: error: with 'Flaction& Flaction::operator=(const Flaction&)' ../src/Flaction.cpp: In member function 'int& Flaction::operator=(const Flaction&)': ../src/Flaction.cpp:105: error: invalid initialization of non-const reference of type 'int&' from a temporary of type 'int' make: *** [src/Flaction.o] Error 1
Forums:
멤버함수로 이항연산자를 오버로딩하면 연산자의 좌변은
멤버함수로 이항연산자를 오버로딩하면 연산자의 좌변은 반드시 해당 클래스의 객체가 자동으로 들어갑니다.
(Flaction) = (int)의 형태라면 Flaction::operator = (int)로 대응이 가능하지만 반대는 멤버함수가 아닌 전역함수로 operator = (int, Flaction)와 같이 선언하고 정의해야합니다.
답변을 보고void operator =(const
답변을 보고
이렇게 함수를 Flaction.h의 클래스 바깥쪽, main.cpp의 메인 위쪽에 각각 한번씩 넣어봤지만
와 같은 에러가 발생합니다.
댓글 달기