bool isEqual(Time t1, Time t2){}bool isEqual(Time &t1, Time &t2){}이렇게 함수 중복 정의 해서 테스트 하려고하는데위에꺼는 객체를 매개변수로 전달하는거고, 밑에꺼는 객체의 주소를 매개변수로 전달하는거 같은데if(isEqual(t1, t2))이렇게 쓰려고하면 isEqual에 하나이상의 인스턴스가 오버로드 됬다고 오류가 계속 뜨는데 무슨 말인지를 모르겠어요 ㅠㅠㅠㅠㅠㅠㅠ
밑에껀 레퍼런스를 매개변수로 받잖아
컴파일러가 isequal만보고 위에함수를실행할지 맡에함수를실행할지 어떻게아냐
헉... 그럼 객체를 받는거랑 레퍼런스를 받는거랑 두개를 동시에는 쓸수가 없는거에요???????!!!!!
밑에껄 포인터로 바꿔보지
포인터로 바꾸니까 돌아가네요.. 그러면 함수 중복정의해서 쓸떄는 객체로 받거나 레퍼런스로 받거나 둘중 하나밖에 못쓰는거에요??
함수이름을바꿔
그런데 객체로 받는거는 그냥 객체로 받는거고 레퍼런스로 받는거는 객체의 주소값을 받는건데 왜 컴파일러가 못알아듣는거에요??
레퍼런스 다시 보고와
함수 오버로딩 모호성에 위반되겠네요
Time t1 , t2 를 통해서 isEqual( t1 , t2 ) 라고 하면 컴파일러는 어떤것을 호출해야 되는지 모르자나 .
너님은 if(isEqual(t1, t2)) 여기서 어떤 함수가 호출되기를 원하셨는데요?
만약 지금 말한게 이해가 안가면 Reference에 대한 문법부터 이해가 필요하구
근데 구지 Call by value로 호출하는 isEqual을 만들필요 있엉? 2번째걸로 할수 있을꺼 같은ㄷ[ㅔ
if(isEqual(t1, t2)) 하면 당연히 bool isEqual(Time t1, Time t2) 요놈이 나올줄 알았는데..ㅠㅠ
근데 찾아보니까 레퍼런스를 매개변수로 쓰는 함수를 호출할떄도 똑같은 방법으로 쓰는구나... ㅠㅠ 결국 이 두개는 같이 못쓰는거네요..
bool isEqual(const Time &t1, const Time &t2)를 쓰는게 나음ㅋ
가르쳐 주셔서 감사합니다 횽님들 ㅠㅠ