해당 함수가 자식 클래스에 있는 함수고, is_empty는 부모 클래스에 있는 함수임.
근데 이 함수에서 저 부모 클래스 함수 호출하려니까 this->안 붙이면 에러뜨네. 왜 이러는거임?
상속 받으면 public으로 선언된 부모 클래스 함수는 그냥 쓸 수 있는 거 아님?
해당 함수가 자식 클래스에 있는 함수고, is_empty는 부모 클래스에 있는 함수임.
근데 이 함수에서 저 부모 클래스 함수 호출하려니까 this->안 붙이면 에러뜨네. 왜 이러는거임?
상속 받으면 public으로 선언된 부모 클래스 함수는 그냥 쓸 수 있는 거 아님?
내용물을 보여줘야
걍 자식 클래스 함수 내에서 왜 부모 클래스 호출 그냥 못하냐 이거임. 코드 내용은 크게 상관 없음
임의로 클래스 만들어서 했는데 되네 코드 문제인가ㅅㅂ
되는게 정상인데 안된다고하니까 보여달란거지
ㅇㅋㅇㅋ
글 새로 올림 봐주셈
상속받으면 왜 public 으로 선언한 부모 클래스 함수를 그냥 쓸수있음? - dc App
당연한거 아님?
그러게 - dc App
this 쓰거나 queue::is_empty 해야함 - dc App
queue::is_empty - dc App
queue(왼쪽꺽쇠)T(오른쪽꺽쇠)::is_empty - dc App
근데 왜 여기선 그래야되는거임? 이유가 알고싶음
템플릿 특임?
그냥 is_empy만 적으면 템플릿 클래스 선언하는 부분을 구문 분석할 때, 저 is_empty가 어디에서 올 건지 알아낼 방법이 없음 - dc App
A 에 f 있다고 선언해 놔도, 나중에 A에서 f 없앤다고 구체화하고 이런거 할 수가 있어서 그럼. 컴파일러 입장에서는 템플릿 클래스 선언만 보고 is_empty가 있을거라고 확신할 수가 없음 - dc App
디씨에서 템플릿 타입 부분 자꾸 지워서 글이 이상해지는데... 아무튼 위 글에서 쓴대로 this 같은거 안쓰려면 컴파일러가 is_empty의 조회를 que 클래스 인스턴스화 할때 T 보고해야함 - dc App
옛날 visual studio 위 코드도 돌아갔었는데, 이게 표준에 안맞다보니 문제가 생겨서 지금은 vs도 2 phase로 바뀜 - dc App
https://devblogs.microsoft.com/cppblog/two-phase-name-lookup-support-comes-to-msvc/
- dc App
https://stackoverflow.com/questions/7908248/in-a-templated-derived-class-why-do-i-need-to-qualify-base-class-member-names-w
- dc App
https://stackoverflow.com/questions/50321788/a-better-way-to-avoid-public-member-invisibility-and-source-code-bloat-repetitio
- dc App
친절한 설명 감사