【发布时间】:2017-11-28 14:44:34
【问题描述】:
我有这个代码:
struct A {
void f();
};
struct B: A {
void f(int i) { std::cout << "f(" << i << ")" << std::endl; }
};
int main()
{
A* pa;
pa = new B;
pa->B::f(5);
}
我收到以下错误:
“B”不是“A”的基数
为什么会出现这个错误? 也许是因为我不能使用指针类型(A 类)(?)内的范围。 而且,为什么如果我删除 B:: 会出现以下错误?:
没有匹配的函数调用 A::f(int)
这是因为我无法通过 A 类型指针调用未在 A 类中定义的方法?但是这个指针指向一个 B 对象所以......我不明白这个,我是用 C++ 启动的 :(
对不起我的英语,谢谢大家
【问题讨论】:
-
移动:“void f(int i) { std::cout A::f(5);”然后编译并运行它。想想刚刚发生的事情,看看你是在试图让逻辑基本上倒退......
标签: c++ class pointers inheritance virtual