首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是“标准C++类型”和"C++/CX结构“?

什么是“标准C++类型”和"C++/CX结构“?
EN

Stack Overflow用户
提问于 2012-09-20 23:56:29
回答 1查看 1K关注 0票数 1

如果这是一个愚蠢的问题,请原谅我,因为我最近开始学习C++/CX。我正在浏览价值类参考类上的MSDN文档,我遇到了以下这些异常:

由于值类或值结构的所有成员都是公共的,并被发送到元数据中,因此不允许使用标准C++类型。

ref类可能包含成员C++/CX结构或标量类型,如枚举类、ref类、float64等。它还可能包含标准的C++类型。C++/CX结构可以具有公共、受保护、内部、私有或受保护的私有可访问性。公共成员或受保护成员被发送到元数据。标准C++类型必须具有私有、内部或受保护的私有可访问性,从而防止它们被发送到元数据。

我的问题是:" C++ /CX结构“和”标准C++类型“的定义是什么?

如果我的猜测是正确的,C++/CX结构包括ref类和结构以及枚举类和结构,标准的C++类型包括int、bool、float、double等,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-21 00:14:05

当文档中写着"C++/CX构造“时,这意味着Windows运行时类型。使用C++/CX编程时,有两类类型:

  1. C++ Types:C++类型集包括可以在普通C++代码中使用的所有类型:基本类型(如intdouble)、枚举、指针、引用、类类型等。
  2. 运行时类型:这些类型可以跨Windows边界使用。这些类型包括引用类型(ref class)、Windows值类型(value class、数值类型、Windows枚举等)。和代表们。

请注意,这些类别之间有一些重叠:数字类型在这两种类型中都有。

您可以在代码中的任何地方使用C++类型,但在编写的任何公共组件的公共面除外。只有Windows运行时类型可以跨Windows运行时ABI边界使用。例如:

代码语言:javascript
运行
复制
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类型。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12522561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档