如果这是一个愚蠢的问题,请原谅我,因为我最近开始学习C++/CX。我正在浏览价值类和参考类上的MSDN文档,我遇到了以下这些异常:
由于值类或值结构的所有成员都是公共的,并被发送到元数据中,因此不允许使用标准C++类型。
和
ref类可能包含成员C++/CX结构或标量类型,如枚举类、ref类、float64等。它还可能包含标准的C++类型。C++/CX结构可以具有公共、受保护、内部、私有或受保护的私有可访问性。公共成员或受保护成员被发送到元数据。标准C++类型必须具有私有、内部或受保护的私有可访问性,从而防止它们被发送到元数据。
我的问题是:" C++ /CX结构“和”标准C++类型“的定义是什么?
如果我的猜测是正确的,C++/CX结构包括ref类和结构以及枚举类和结构,标准的C++类型包括int、bool、float、double等,对吗?
发布于 2012-09-21 00:14:05
当文档中写着"C++/CX构造“时,这意味着Windows运行时类型。使用C++/CX编程时,有两类类型:
int或double)、枚举、指针、引用、类类型等。ref class)、Windows值类型(value class、数值类型、Windows枚举等)。和代表们。请注意,这些类别之间有一些重叠:数字类型在这两种类型中都有。
您可以在代码中的任何地方使用C++类型,但在编写的任何公共组件的公共面除外。只有Windows运行时类型可以跨Windows运行时ABI边界使用。例如:
public ref class C sealed
{
public:
// Ok: int is a fundamental WinRT type
void F(int x) { }
// Not ok: std::string is not a WinRT type
void G(std::string s) { }
private:
// Ok: _s is private; private members are implementation details, so you
// may use ordinary C++ types for private members.
std::string _s;
};这两类类型并不是在C++中构建Windows组件的唯一类型:如果在.NET中构建组件,则可以使用特定于.NET的类型(例如,具体的泛型类型)和特定于.NET的构造(例如泛型方法),这些构造都是无效的Windows类型。
https://stackoverflow.com/questions/12522561
复制相似问题