如何将 size_t 类型的指针转换为枚举指针

How can I cast a pointer of type size_t to a pointer of enum ?

本文关键字:指针 转换 枚举 类型 size      更新时间:2023-10-16

我想给这个容器分配一个size_t:

  std::vector <nts::Tristate *>   _components;

为此,我试图const size_t &nts::Tristate *

this->_components[0] = static_cast<nts::Tristate *>(&value);

但是我有以下错误:

error: invalid static_cast from type ‘const size_t* {aka const long unsigned int*}’ to type ‘nts::Tristate*’
     this->_components[0] = static_cast<nts::Tristate *>(&value);

知道为什么吗?

在不问你为什么要做这样的事情的情况下,问题是这两种类型(size_t*nts::Tristate*)是完全不相关的,你需要重新插入一种类型作为另一种类型。你对reinterpret_cast做事.

应该注意的是,做这样的事情很可能会在未来导致其他问题,这些问题将导致未定义的行为。您需要注意的一件事是value是否是局部变量,因为这样您就会存储指向此局部变量的指针,该指针将超出范围并消失。另一个是,使用 _components[0] 的程序的其余部分需要知道它实际上不是指向nts::Tristate对象的指针,而是指向size_t值的指针。简而言之,你正在做的事情是非常危险的。