比较If语句中的数据类型

弗朗西斯·库格勒

有没有一种方法可以在if语句中测试参数的数据类型?这是一个源代码示例:它不会编译,但用于表达我的意图。

typedef char cInt[sizeof(int)];
typedef char cFloat[sizeof(float)];
typedef char cDouble[sizeof(double)];

template<typename T>
char* convertToCharStr( const T& t ) {
    if ( t == int ) {
        cInt c = t;
        return c;
     }
     if ( t == float ) {
        cFloat c = t;
        return c;
     }
     if ( t == double ) {
        cDouble c = t;
        return c;
     }
     return nullptr;
}

如您所见,我正在尝试创建一个模板函数,该函数可以采用任何默认数据类型,例如int,unsigned int,float,double,并且根据数据类型,它将根据堆栈在栈上创建适当的char []变量。转换为传入的数据类型,并将数据存储到char []中,然后将指针返回该函数。

我将其保留原样,但请注意,字符数组应为未签名的char。

嗯,有一些方法可以typeid像在这里那样使用typeid来检查模板类型,但是我建议改为使用模板专用化,例如:

template<typename T>
char* convertToCharStr( const T& t ) {
    //Maybe you might feel it more appropriate to put a static assert here 
    return nullptr; 
}

template<>
char* convertToCharStr( const int& t ) {
    cInt c = t;
    return c;
}

template<>
char* convertToCharStr( const float& t ) {
    cFloat c = t;
    return c;
}

template<>
char* convertToCharStr( const double& t ) {
    cDouble c = t;
    return c;
}

请参阅CPP参考和有关此问题的更多讨论(以及您可以采取其他措施避免专业模板制作的麻烦)。C ++模板专业化语法

话虽这么说,在堆栈上创建一个变量然后返回指向它的指针是不安全的,因为该变量将在函数调用返回时被取消堆栈,并且稍后可能会被覆盖。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较If语句中的数据类型

来自分类Dev

在`function`语句中定义结果数据类型

来自分类Dev

在`function`语句中定义结果数据类型

来自分类Dev

NumPy数据类型比较

来自分类Dev

在返回不同数据类型的CASE语句中转换为CHAR值

来自分类Dev

如何在PL / SQL代码或SQL语句中使用REF数据类型?

来自分类Dev

CASE语句中的“将nvarchar值转换为数据类型int时转换失败”

来自分类Dev

在具有不同数据类型的ORDER BY子句中使用CASE语句

来自分类Dev

在printf语句中使用%x打印整数数据类型的值

来自分类Dev

带有 TIME 数据类型的 MySQL INSERT 语句中的语法错误

来自分类Dev

如何比较sympy数据类型

来自分类Dev

比较相似的数据类型无效?

来自分类Dev

比较不同数据类型的问题

来自分类Dev

对if语句使用Double数据类型

来自分类Dev

在MS Access Update语句的WHERE子句中使用替换功能时,获取数据类型不匹配错误

来自分类Dev

比较if语句中的枚举

来自分类Dev

比较IF语句中的NSString

来自分类Dev

比较If语句中的日期

来自分类Dev

where子句中的Cassandra地图数据类型

来自分类Dev

使用BIT数据类型过滤WHERE子句中的查询

来自分类Dev

在Haskell Where子句中定义自己的数据类型

来自分类Dev

where子句中的Cassandra地图数据类型

来自分类Dev

使用DacFX SqlCodeAnalysisRule检查where子句中的数据类型

来自分类Dev

在Oracle中将长数据类型与varchar数据进行比较

来自分类Dev

如何将列的数据类型与给定的数据类型进行比较

来自分类Dev

比较vtk数据类型和基本数据类型

来自分类Dev

如何比较记录是否存在与json数据类型字段?

来自分类Dev

在Haskell中比较各种数据类型

来自分类Dev

如何仅从DateTime数据类型比较时和分

Related 相关文章

  1. 1

    比较If语句中的数据类型

  2. 2

    在`function`语句中定义结果数据类型

  3. 3

    在`function`语句中定义结果数据类型

  4. 4

    NumPy数据类型比较

  5. 5

    在返回不同数据类型的CASE语句中转换为CHAR值

  6. 6

    如何在PL / SQL代码或SQL语句中使用REF数据类型?

  7. 7

    CASE语句中的“将nvarchar值转换为数据类型int时转换失败”

  8. 8

    在具有不同数据类型的ORDER BY子句中使用CASE语句

  9. 9

    在printf语句中使用%x打印整数数据类型的值

  10. 10

    带有 TIME 数据类型的 MySQL INSERT 语句中的语法错误

  11. 11

    如何比较sympy数据类型

  12. 12

    比较相似的数据类型无效?

  13. 13

    比较不同数据类型的问题

  14. 14

    对if语句使用Double数据类型

  15. 15

    在MS Access Update语句的WHERE子句中使用替换功能时,获取数据类型不匹配错误

  16. 16

    比较if语句中的枚举

  17. 17

    比较IF语句中的NSString

  18. 18

    比较If语句中的日期

  19. 19

    where子句中的Cassandra地图数据类型

  20. 20

    使用BIT数据类型过滤WHERE子句中的查询

  21. 21

    在Haskell Where子句中定义自己的数据类型

  22. 22

    where子句中的Cassandra地图数据类型

  23. 23

    使用DacFX SqlCodeAnalysisRule检查where子句中的数据类型

  24. 24

    在Oracle中将长数据类型与varchar数据进行比较

  25. 25

    如何将列的数据类型与给定的数据类型进行比较

  26. 26

    比较vtk数据类型和基本数据类型

  27. 27

    如何比较记录是否存在与json数据类型字段?

  28. 28

    在Haskell中比较各种数据类型

  29. 29

    如何仅从DateTime数据类型比较时和分

热门标签

归档