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

pne*_*ook 4 c++ windows-8 windows-runtime

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

假设我有一个简单的Building类.可以定义如下

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

然后像这样使用

std::shared_ptr<Building> bldg = std::make_shared<Building>(5);
Run Code Online (Sandbox Code Playgroud)

我仍然希望使用make_shared将其实例化为shared_ptr来获取引用计数,但我只是在困惑我需要将它作为ref类.

bam*_*s53 6

Herb Sutter建议(12分钟)你只在你的程序边界使用非标准的C++/CX,你的C++代码必须与WinRT交互.这意味着您只打算在C++中使用的类不需要是ref类或使用除ISO标准C++之外的任何类.