将整数静态转换为指针类型

朱利奥·瓜拉(Julio Guerra)

我只是不知道如何在C ++中编译此简单示例:

class C
{
  public:
    static const void* noop = static_cast<const void*> (0x1);
};

由于static我想要存储限制,此处唯一可能的强制转换将是,static_cast但它与此int-to-ptr强制转换不兼容。

错误:从类型'int'到类型'const void *'的static_cast无效

如何将整数值静态转换为指针类型?

101010

这里的问题是,尽管您声明了一个限定符,但const void*const限定符并不适用于指针,而是适用于该指针指向的地址。

这意味着它noop不是static const成员变量,并且所有非const static成员变量都需要在定义之外的单个转换单元中进行定义和初始化,class如下例所示:

class C {
  public:
    static const void *noop;
};

const void* C::noop = (const void*) 0x1;

现场演示

以下解决方法:

class C {
public:
  static constexpr const void* noop = reinterpret_cast<const void*>(0x1);
};

尽管它在GCC中编译并可以正常工作,但它不是有效的C ++(例如,它不能与clang或VC ++ 2013一起编译),因为根据标准§5.19 / 2常量表达式[expr.const] 的结果,一个reinterpret_cast不能为常量表达式。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将整数静态转换为指针类型

来自分类Dev

将指针转换为整数

来自分类Dev

将整数类型转换为指针时,整数指针分配故障

来自分类Dev

将整数常量转换为指针

来自分类Dev

如何修复将指针转换为整数?

来自分类Dev

C ++将数字转换为类型的指针?

来自分类Dev

是否将指针转换为整数定义了指针的总顺序?

来自分类Dev

将整数值转换为枚举类型

来自分类Dev

无法将类型记录转换为整数

来自分类Dev

将结构指针类型转换为字符指针引用

来自分类Dev

将静态数组转换为Delphi中的指针?

来自分类Dev

类型将void指针转换为结构类型

来自分类Dev

是否可以将函数指针转换为整数?

来自分类Dev

C-将char数组转换为整数指针吗?

来自分类Dev

如何将整数转换为指针,反之亦然

来自分类Dev

将*指针转换为***指针

来自分类Dev

将*指针转换为***指针

来自分类Dev

将字符类型转换为整数类型是否安全?

来自分类Dev

将double或float转换为整数类型,哪种类型?

来自分类Dev

将字符类型转换为整数类型是否安全?

来自分类Dev

如何将整数类型转换为无符号类型?

来自分类Dev

如何将“指针转换为指针类型”转换为const?

来自分类Dev

如何将“指针转换为指针类型”转换为const?

来自分类Dev

将Cython融合类型转换为C ++指针

来自分类Dev

将非空返回类型的Lambda转换为函数指针

来自分类Dev

将类型强制转换为结构指针时出错

来自分类Dev

无法将NULL转换为指针到对象的类型

来自分类Dev

将函数指针类型转换为对应的字符串

来自分类Dev

类型转换char指针到整数指针