【问题标题】:Inheritance in C++/WinRT Windows Runtime ComponentsC++/WinRT Windows 运行时组件中的继承
【发布时间】:2020-02-22 03:16:50
【问题描述】:

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

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

【问题讨论】:

    标签: c++-winrt


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。考虑到我来自 C# 背景,我对多重继承有点紧张,所以我可能会坚持使用轻量级封装原生类,而不是现在从它继承。
    猜你喜欢
    • 2016-07-19
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    相关资源
    最近更新 更多