【发布时间】:2016-04-28 11:14:30
【问题描述】:
我有 2 个如下所示的类:
class A
{
public:
A();
~A();
virtual void func() { cout << "this is A class" << endl; };
};
和:
class B:public A
{
public:
B();
~B();
virtual void func() { cout << "this is B class" << endl; };
virtual void funcky() { cout << "How to print this method?" << endl; };
};
这是我的主要内容:
include "B.h"
void main()
{
A* a;
a = new B;
}
现在我的问题是如何打印“funcky”方法? (没有在 main 中创建 B 对象。)
我认为它与动态投射有关,但我不确定。
【问题讨论】:
-
你想从A的接口访问一个在A的接口中不存在的方法?
-
使用
dynamic_cast确实可以做到这一点。但是——我在这里与 Karoly Horvath 的观点相同——这似乎不太可能是实现提问者真正试图做的事情的最佳方式。 Tomer Uzan,为什么您究竟想调用B::funcky,而不需要声明任何类型为B或B*? -
void main?include?呃
标签: c++ methods polymorphism