하마는하마하마해
297
2020-10-05 19:55:37
2
109

두 사각형의 크기를 비교하는 연산자 오버라이딩 코드 피드백 해주실 수 있나요? (C++)



#include <iostream>
using namespace std;

class Rectangle
{
private:
	int i32height, i32width;

public:
	Rectangle(int h, int w);
	bool operator<(const Rectangle& s);
};

Rectangle::Rectangle(int h, int w) {
	h = i32height;
	w = i32width;
	int area = h * w;
}

bool Rectangle::operator<(const Rectangle& s) {
	if (this == &s)return false;
	if (Rectangle.area < s.Rectangle.area)return true;
	else return false;
}

int main() {

	Rectangle R1(3, 4);
	Rectangle R2(5, 6);

	if (R2 < R1)
		cout << "R1 is bigger than R2" << endl;
	else
		cout << "R1 is smaller than R2 or same" << endl;

	return 0;
}


컴파일러 visual studio에 올려놓으면 Rectangel.area부분에서 문제가 있다고 뜹니다.

이런저런 시도를 해보았는데 좀처럼 되질않아서

피드백 해주신다면 정말 감사드립니다!

0
  • 답변 2

  • 그래안그래
    306
    2020-10-05 22:24:42
    Area가어디있는거죵?
  • 옴마에마
    362
    2020-10-06 07:50:59 작성 2020-10-06 07:57:58 수정됨

    area 변수를 생성자 함수안에 선언하시면 생성자 함수가 끝나고 바로 사라지지 않을까요?

    private 부분에 클래스변수로 추가하셔야죠.

    연산자함수 조건문은 if (area < s.area)return true; 요렇게 바껴야하구요

    그리고 생성자 함수에 초기화 부분도 반대로 되어있네요.


  • 로그인을 하시면 답변 을 등록할 수 있습니다.