【发布时间】:2011-12-03 16:26:54
【问题描述】:
为什么“public value struct”不能有任何方法或构造函数,而“value struct”可以? 如何在 WinRT 组件库中编写类似“Vector3”的结构并在另一个 WinRT 应用程序中使用?
【问题讨论】:
标签: directx windows-runtime c++-cx
为什么“public value struct”不能有任何方法或构造函数,而“value struct”可以? 如何在 WinRT 组件库中编写类似“Vector3”的结构并在另一个 WinRT 应用程序中使用?
【问题讨论】:
标签: directx windows-runtime c++-cx
当您将结构声明为“公共”时,您将其声明为 Windows 运行时结构。 Windows 运行时中的结构是值类型。它们不能有方法(或构造函数)。
它们也按值编组,这可能不是您想要的。
您可能希望创建一个类而不是结构。
【讨论】:
Vector3)。顺便说一句,WinRT 中的结构和类是否类似于 .NET,因为只有结构可以在堆栈上分配(因此更快)?
值类型/结构被映射为内存的“块”,很像传统的 C 结构,而不是 .Net 的实现,即:它可以包含字段和方法..
所以值类型只需要在其中包含字段或构造函数。
您需要将 Vector3 拆分为两部分,其中一部分包含可能称为 Vector3Data 的数据,而 Vector3 具有操作它所需的所有方法。
【讨论】: