C++ 如何将size\u t类型的指针强制转换为enum类型的指针?

C++ 如何将size\u t类型的指针强制转换为enum类型的指针?,c++,pointers,C++,Pointers,我想给这个容器分配一个大小: std::vector <nts::Tristate *> _components; 但我有以下错误: 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 *&g

我想给这个容器分配一个大小:

  std::vector <nts::Tristate *>   _components;
但我有以下错误:

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);
错误:从类型“const size\u t*{aka const long unsigned int*}”到类型“nts::Tristate*”的静态转换无效
此->\u组件[0]=静态\u转换(&value);
你知道为什么吗

不用问为什么要这样做,问题是这两种类型(
size\t*
nts::Tristate*
)完全不相关,需要将一种类型重新插入另一种类型。你和我一起做事

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

不用问你为什么要这样做,问题是这两种类型(
size\t*
nts::Tristate*
)完全不相关,你需要将一种类型重新插入另一种类型。你和我一起做事

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

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);