f
最初の関数のオーバーロードを解決しないという呼び出しがなぜですか?エラーが発生します:
source.cpp: In function 'int main()':
source.cpp:12:31: error: 'A' is an inaccessible base of 'B'
class A {}; class B : A {};
void f(const A &) { std::cout << "const A &"; }
template <typename T> void f(T) { std::cout << "Generic"; }
int main() {
B b;
f(dynamic_cast<const A &>(b));
}
コードを取り出すとdynamic_cast
、コードは機能しますが、2番目 f
のコードが呼び出されます(「Generic」と出力されます)。しかし、私がやろうとしているのは、最初の電話を受けることです。うまくいくと思いましたdynamic_cast
が、どういうわけか問題が発生します。私はここで何が間違っているのですか?