使用参数继承重写函数
我有一个通用项目列表类,可以使用它作为基类创建更具体的列表,如下所示。
ref class ItemBase { }
ref class ItemA : ItemBase { }
ref class ItemList abstract {
public:
virtual void add(ItemBase ^p);
}
ref class ItemListA : ItemList {
public:
virtual void add(ItemA ^p) override; // it doesn't works :(
}
我想限制在每个类中添加特定类型的项目。
I have a generic items list class to create a more specific listing using it as base class, something like this..
ref class ItemBase { }
ref class ItemA : ItemBase { }
ref class ItemList abstract {
public:
virtual void add(ItemBase ^p);
}
ref class ItemListA : ItemList {
public:
virtual void add(ItemA ^p) override; // it doesn't works :(
}
I want to restric adding specific type of items in each class.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
执行此操作的可接受模式是使基类方法受保护:
这是使用泛型的更好解决方案。请注意我们如何将泛型参数
T
限制为ItemBase
,以强制该集合只能与ItemBase
或其子类一起使用。The accepted pattern for doing this is making the base class method
protected
:Here is a better solution using generics. Note how we constrain the generic parameter
T
toItemBase
, to enforce that this collection must only ne used withItemBase
or its subclasses.