为什么调用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
代码将工作,但第二个 f
被调用(它打印“通用”)。但我想做的是接到第一个电话。我认为 adynamic_cast
会起作用,但由于某种原因它会导致问题。我在这里做错了什么?