【发布时间】:2012-12-13 22:58:41
【问题描述】:
为什么对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 代码将工作,但 second f 被调用(它打印“通用”)。但我想做的是接到第一个电话。我认为dynamic_cast 会起作用,但由于某种原因它会导致问题。我在这里做错了什么?
【问题讨论】:
标签: c++