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

时间:2016-02-17 12:20:39

标签: c++ pointers

我想将size_t分配给此容器:

for m in Jan Feb Mar Apr

为此,我正在尝试将 std::vector <nts::Tristate *> _components; 转换为const size_t &

nts::Tristate *

但我有以下错误:

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

知道为什么吗?

1 个答案:

答案 0 :(得分:5)

如果没有问为什么你想做类似的事情,问题是这两种类型(size_t*nts::Tristate*)是完全无关的,你需要< em> reinterpet 一种类型作为另一种。你用reinterpret_cast做事。

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