C++/WinRT 中的继承 Windows 运行时组件

Inheritance in C++/WinRT Windows Runtime Components

我有几个与使用 C++/WinRT 编写的 Windows 运行时组件中的继承相关的问题。首先,为什么有一个限制,即 classes,如果它们有一个基础 class,必须最终派生自 Windows.* 命名空间中的 class?

其次,解决此问题的最佳方法是什么。事实上,我真的不希望消费者能够从我的 class 派生,但我想在实现中从基 class 派生,以免重写代码。目前,我的实现 class 是围绕使用标准 C++ 继承的标准 C++ class 的轻量级包装器。但是有没有办法简化这个呢?可以列出一个实现 class 作为另一个实现的基础 class 吗?我主要熟悉不能多重继承的C#,所以对这种事情不太确定。

从基础 class 派生的任何运行时 class(您在应用程序中声明的)称为可组合 class。可组合项 class 的最终基础 class 必须是源自 Windows.* 命名空间;的类型。

并且如果您想继承自定义运行时class,Windows App Certification Kit 测试将产生错误。从这个看来,你似乎只能声明一个C++ native class并实现接口。让实现class继承它。