我想给这个容器分配一个 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
值。简而言之,你的所作所为非常危险。
关于c++ - 如何将 size_t 类型的指针转换为 enum 的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35456582/