2016-02-17 135 views
0

我想一個爲size_t分配到這個容器:如何將類型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); 

有什麼想法爲什麼?

回答

5

不問爲什麼你想要做這樣的事情,問題是這兩種類型(size_t*nts::Tristate*)完全無關,和你需要reinterpet一個類型爲其他。你用reinterpret_cast做事。

應該指出,做這樣的事情很可能會導致其他問題的發展,導致未定義行爲的問題。你需要注意的事情之一是如果value是一個局部變量,因爲那麼你存儲一個指向這個局部變量的指針,它將超出範圍並消失。另一個是,使用_components[0]的程序的其餘部分需要知道它實際上不是指向nts::Tristate對象的指針,而是指向size_t值的指針。總之,你在做什麼是非常危險的。