Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将模板化的基本包装器类彼此强制转换 我正在研究一个跨平台的环境,用于封装其他库,尤其是因为它帮助我理解C++及其库/扩展,因为我对编程语言很陌生。_C++_Templates_Reference_Casting - Fatal编程技术网

将模板化的基本包装器类彼此强制转换 我正在研究一个跨平台的环境,用于封装其他库,尤其是因为它帮助我理解C++及其库/扩展,因为我对编程语言很陌生。

将模板化的基本包装器类彼此强制转换 我正在研究一个跨平台的环境,用于封装其他库,尤其是因为它帮助我理解C++及其库/扩展,因为我对编程语言很陌生。,c++,templates,reference,casting,C++,Templates,Reference,Casting,我正在为基元类型创建包装器,因此我可以为它们提供诸如eventSerialize(…)、eventRepresentate(…)等函数(还有一些其他原因) 为了节省时间,我考虑为原语制作一个模板类包装器 我有以下问题: 我是否正确地引用了操作员 如何确保它们可以相互铸造?(模板运算符原语();) 我的意思是,我可以找到所有其他运算符,但在哪里可以找到如何使用正确的语法正确地编写它们(如const/&) 我希望有人能给我这些答案 \ifndef swift\u Int32 #定义swift_I

我正在为基元类型创建包装器,因此我可以为它们提供诸如eventSerialize(…)、eventRepresentate(…)等函数(还有一些其他原因)

为了节省时间,我考虑为原语制作一个模板类包装器

我有以下问题:

  • 我是否正确地引用了操作员
  • 如何确保它们可以相互铸造?(模板运算符原语();)
  • 我的意思是,我可以找到所有其他运算符,但在哪里可以找到如何使用正确的语法正确地编写它们(如const/&)
我希望有人能给我这些答案

\ifndef swift\u Int32
#定义swift_Int32
#包括
名称空间快捷键
{
模板类原语:公共对象
{
T数据;
公众:
原语();
本原(T&);
本原(本原&);
原语&运算符=(常量原语&);
基元运算符*(常量基元和值);
基元运算符/(常量基元和值);
原语运算符+(常量原语和值);
基元运算符-(常量基元和值);
原语和运算符*=(常量原语和值);
原语和运算符/=(常量原语和值);
原语和运算符+=(常量原语和值);
原语和运算符-=(常量原语和值);
布尔运算符==(常量原语&)常量;
布尔运算符!=(常量原语&)常量;
布尔运算符<(常量原语&)常量;
布尔运算符>(常量原语和)常量;
布尔运算符=(常量原语&)常量;
};
typedef原始布尔;
类型定义布尔位;
typedef原始字符;
typedef基元字节;
typedef原语Int16;
typedef原语UInt16;
typedef原语Int32;
typedef原语UInt32;
typedef Int16短;
类型DEF UInt16 UShort;
typedef Int32 Int;
类型定义UInt32 UInt;
} 
#endif//swift\u Int32

您忘记了按位运算符和逻辑运算符。请参阅问题3。但是谢谢你的评论。运算符的一般规则是:如果你可以正常地将结果用作左值,则返回一个引用。否则,返回一个副本。将非修改的二进制运算符作为自由函数始终是一个好主意,因为否则只有第二个参数允许隐式转换。因此,答案中有一些有用的信息。