함수 오버로드에 문제가 있습니다. 나는 몇 가지 간단한 예제를 보여줍니다 :함수 오버로드가있는 C++ 문제
class A {};
class B : public A{};
void somefunction(A&, A&);
void somefunction(B&, B&);
void someotherfunction() {
...
A& a1 = ...
A& a2 = ...
...
}
모두 A1과 A2는 B의 인스턴스 만
somefunction(a1,a2);
전화
void somefunction(A&, A&);
내가 뭘 잘못 했습니까입니까? 다형성과 과부하는 그런 것들을위한 거지, 그렇지?
편집 : 이제 알았습니다. 작동하지 않습니다. (답변 해 주셔서 감사합니다.)
어떻게 해결할 수 있습니까? 주조하지 않고.
edit2 : 좋아, 무언가를 갖고 싶기 때문에 타입 캐스팅으로 그대로 남겨 둡니다. 도와 주셔서 감사합니다.
내가 말했듯이, 나는 타입 캐스팅을 피하고 싶다.그리고 만약 내가 다른 클래스 C isa A와 또 다른 somefunction (C &, C &)을 가지고 있다면? (나는 실제로 가지고있는 간단한 예제를 게시하고 싶었다) – George
'somefunction (C &, C &)'는'somefunction (B &, B &)'와 충돌하지 않는다. 모든 캐스트는 함수를 사용해야하는 모호성을 제거합니다. –
하지만 함수를 호출하려면 B 또는 C 유형인지 확인해야합니다. 나는 어떤 수표 나 형형색환도 피하고 싶다. – George