草庐IT

c++ - Boost.Any 获取原始类型

我需要将any变量转换为原始类型。我需要这样做:inti=10;anya(i);int&i2=any_cast(a);但我希望类型存储在any变量中。我这样写:inti=10;anya(i);a::type_value&i2=any_cast(a);//thereisnoactuallytype_value我怎样才能做这样的事情?或者如何从any变量中提取原始类型?Boost.variant也很方便。如果我做不到,那么我还有一个问题,有什么C++技术和库可以通过函数存储和获取类型来解决这个问题? 最佳答案 C++是一种静态类型的语言

c++ - 如何以最高精度存储 double

我有点难以存储具有最大可用精度的数字:doubletmp=569.232306826889043804840184748172760009765625L;我正在尝试将其打印在屏幕上:printf("%0.52f\n",tmp);这就是我所拥有的:569.2323068268890400000000000000000000000000000000000000这是我能达到的最大精度吗?附言我正在使用VisualStudio2008 最佳答案 double通常存储在IEEE754binary64中格式。binary64具有52位精度,而不

c++ - C++11/C++14 中的文字类型类

intx=1;//NotConstantclassA{public:intvalue=x;intvalue2{x};A(inta):value(x),value2(x){}A(inta,intb):value{x},value2{x}{}constexprA():value{0},value2{0}{}};constexprintfunction(Aobj1,Aobj2,Aobj3,Aobj4,Aobj5,Aobj6,Aobj7){return1;}intmain(){inty=2;//NotConstantAobj1(y);Aobj2{y};Aobj3=y;Aobj4={y};Aob

C++ : Ternary Operator (Conditional Operator) and its Implicit Type Conversion Rules

三元运算符的参数是否有隐式类型转换规则?三元运算符总是需要返回相同的类型。此类型仅由第二个和第三个参数(1st?2nd:3rd)确定,因此两个参数都转换为此类型。这种类型是如何确定的?更具体地说,我测试了一个例子:classpointclass{pointclass();pointclass(inti);//(pointclass)(int)operatorbool()const;//(bool)(pointclass)};我有一个类(pointclass),它支持从int进行隐式转换至pointclass和pointclass的隐式转换至bool.inti;pointclassp;b

c++ - C++ 中严格类型定义的习语

在C++中是否有严格类型定义的习惯用法,可能使用模板?类似于:templatestructnew_type{base_typep;explicitnew_type(base_typei=base_type()):p(i){}};typedefnew_typex_coordinate;typedefnew_typey_coordinate;所以我可以让这样的事情成为编译时错误:x_coordinatex(5);y_coordinatey(6);x=y;//whoops那里的__LINE__看起来可能很麻烦,但我宁愿不必手动创建一组常量来保持每种类型的唯一性。

c++ - 请解释这个执行强制转换和类型检查的硬核宏

以下代码来自必须同时使用C和C++编译的现有应用程序。有一个宏:/*Type-checkingmacrotoprovideargumentsforCoCreateInstance()etc.*Thepointerarithmeticisacompile-timepointertypecheckthat'obj'*reallyisa'type**',butisintendedtohavenoeffectatruntime.*/#defineCOMPTR(type,obj)&IID_##type,\(void**)(void*)((obj)+(sizeof((obj)-(type**)(o

c++ - 类型信息/类型标识输出

我目前正在尝试调试一段简单的代码,希望了解特定变量类型在程序运行过程中如何变化。我正在使用typeinfo头文件,因此我可以使用typeid.name()。我知道typeid.name()是特定于编译器的,因此输出可能不是特别有用或标准。我正在使用GCC但我无法找到潜在输出的列表,尽管进行了搜索,假设存在typeid输出符号列表。我不想根据输出进行任何类型的转换或操作任何类型的数据,只需遵循其类型即可。#include#includeintmain(){inta=10;cout有符号列表吗? 最佳答案 我不知道这样的列表是否存在,但

c++ - 为什么用short不好

即使在开发人员保证变量永远不会超过一个字节有时甚至两个字节的脚本中也是很常见的;许多人决定对每个可能的变量使用int类型来表示0-1范围内的数字nay。为什么改用char或short会造成如此大的伤害?我想我听到有人说int是“更标准”的类型。这是什么意思。我的问题是数据类型int是否比short(或其他较小的数据类型)有任何明确的优势,由于这些优势,人们过去几乎总是求助于整数? 最佳答案 作为一般规则,C中的大多数算术都是使用int类型执行的(即,普通int,而不是short或长)。这是因为(a)C的定义是这样说的,这与以下事实有

C++ 将任何类型的参数发送给函数

它是这样的:我想创建一个void函数,它将接收两种众所周知的值类型和另一种可以是任何类型的值。代码将是这样的:voidchange_settings(stringelement,shortsetting,???value){switch(setting){caseST_NAME://Castvaluetostringorchar*andchangeelement.namebreak;caseST_AMOUNT://Castvaluetointegerandchangeelement.amountbreak;caseST_ENABLED://Castvaluetobooleanandch

C++ 具有不同返回类型的相同函数参数

我需要找到一些方法来模拟C++中函数返回类型的重载。我知道没有办法直接做到这一点,但我希望有一些开箱即用的方法。我们正在创建一个供用户使用的API,他们将传入一个数据字符串,该字符串会根据字符串信息检索一个值。这些值是不同的类型。本质上,我们想让他们做:int=RetrieveValue(dataString1);double=RetrieveValue(dataString2);//Obviously,sincetheydon'tknowthetype,theywouldn'tuseint=....Itwouldbe:AnotherFunction(RetrieveValue(dat