我有一个接口MuInterface
(抽象类)。和我有3类,从该接口得到:我可以命名从接口派生的每个类吗?
class A : public MyInterface //...
class B : public MyInterface //...
class C : public MyInterface //...
我有接口的载体:std::vector< std::shared_ptr<MyInterface> > theVec;
包含A
类型,B
和C
的对象。是否有可能知道在for循环中遍历该向量以显示当前对象的类型(如果它是A
,B
或C
)?我想过像静态字符串成员,但如何“虚拟化”它?如果我使用显示静态const字符串的虚拟函数,可以吗:
virtual const std::string getType() { return classType; } // classType is static const std::string defined for each class
?
是的,但使用接口的关键在于将实际类型抽象出来。你为什么需要这样做? – 2014-11-06 09:52:06
如果您需要某种类型的识别,您可能需要考虑CRTP – 2014-11-06 09:53:12
@LuchianGrigore我只是在调试模式下才需要它,以查看该订单是否正常,但我已验证它并且没有问题。我会把展示的东西放在A,B和C类中。我认为这种方式更好。谢谢 – sop 2014-11-06 10:36:25