【发布时间】:2019-09-28 10:39:30
【问题描述】:
我需要一些帮助才能正确理解所有内容。
我想检查一个指向抽象类的指针是否是特定子类的实例。
我有一个抽象类“kunde”和两个继承kunde方法的子类“firmenkunde”和“privatkunde”。
为了通过“int knr”(int customer number)搜索,我使用指向“kunde”的指针作为返回类型。
在数据库类中,我取回“kdstatus”并使用
kunde * kd = new privatkunde(0);
如果状态是 PK 或 new Firmenkunde(0) 如果它是 FK。 抽象类 kunde 没有任何我可以用来保存状态的属性。
通过这种方式,我确实希望能够询问返回的指针是否是类 privatkunde 或 Firmenkunde 的实例。但是我没有找到任何方法来做到这一点。
MessageBox::Show(marshal_as<String^>(typeid(kd).name()));
我确实询问了 typeid 名称,但这只会返回“class kunde *”,这不是我想知道的。
有没有办法解决这个问题?
【问题讨论】:
-
这不是 C++。
-
看看
virtual函数。 -
请问什么不是 C++?您的意思是 MessageBox 这是来自 .Net,因为我们使用 Windows 窗体作为 gui
-
在基类中添加一个变量(比如ID);每个子类的 ID 不同。
标签: class object pointers c++-cli instanceof