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