Der Name foo()
hängt nicht von den Template-Parametern von Derived
ab - es ist ein nicht abhängiger Name. Die Basisklasse, in der foo()
gefunden wird, andererseits - Base<T>
- ist hängt von einem der Derived
-Schablonenparameter ab (nämlich T
), also ist es ein < em> abhängige Basisklasse . C ++ sucht in abhängigen Basisklassen nicht nach nicht abhängigen Namen.
Um dies zu beheben, müssen Sie den Aufruf für bar()
in Derived::foo()
entweder als this->bar()
oder Base<T>::bar()
qualifizieren.
Dieser C ++ FAQ-Artikel erklärt es nett: siehe Ссылка
Der von Ihnen bereitgestellte Code weist in der von Ihnen angegebenen Zeile keinen Buildfehler auf. Es hat einen hier:
%Vor%was sollte lesen:
%Vor%(oder verwenden Sie den gewünschten Typ anstelle von int.)