c++ - 我的 C++ 类必须是 Windows 8 Metro 风格应用程序中的引用类吗?

标签 c++ windows-8 windows-runtime

我知道,如果我想将我的 C++ 代码作为 WinRT 组件共享给 .Net 和 JavaScript 代码,我必须将我的类声明为 public ref MyClass sealed。但是,如果我有一个我只想在我的应用程序中使用的类,它是否需要是一个 ref 类?

假设我有一个简单的建筑类。是否可以定义如下

#pragma once
class Building
{
public:
    Building(int cap);
    ~Building(void);
    int get_capacity() {return capacity;}
private:
    int capacity;
};

然后像这样使用

std::shared_ptr<Building> bldg = std::make_shared<Building>(5);

我仍然想使用 make_shared 将其实例化为 shared_ptr 以获取引用计数,但我只是很困惑我需要将其设为 ref 类。

最佳答案

Herb Sutter recommends (12 分钟内)您仅在程序边界使用非标准 C++/CX,您的 C++ 代码必须与 WinRT 交互。因此,这意味着您只打算从 C++ 使用的类不需要是 ref 类或使用 ISO 标准 C++ 以外的任何东西。

关于c++ - 我的 C++ 类必须是 Windows 8 Metro 风格应用程序中的引用类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10424032/

相关文章:

windows-8 - Nuget,可移植库和WinRT appx : Payload contains two or more files with the same destination path

c++ - 如何确保 lrint 在 gcc 中内联?

.net - 在构建服务器上为 Windows 应用商店单元测试自动获取开发人员许可证

java - 在路径中找不到 firefox 二进制文件

windows-8 - WinRT 作为 Win32 API 的替代品

c# - 在 OnSuspending 方法期间保存数据

c++ - 如何应对开发流失

适用于 Windows 的 C++ BLE Central 开发

c++ - 我们如何跳过帧,计算帧数并使用视频阅读器获取当前帧

windows-8 - WinRT是直接访问NT内核(需要操作系统支持时)还是通过Win32?