element* を int に静的にキャストしようとするとエラーが発生するのはなぜですか
typedef Element* ElementPtr
int Element::getVP (ElementPtr item)
{
return static_cast <int>(item); // I have a class called Element
}
element* を int に静的にキャストしようとするとエラーが発生するのはなぜですか
typedef Element* ElementPtr
int Element::getVP (ElementPtr item)
{
return static_cast <int>(item); // I have a class called Element
}
何が質問なのかよくわかりませんが、暗黙の変換関数が必要だと思います。Element
intに変換するには、operator int()
struct Element
{
operator int()
{
return i;
}
int i;
};
int Element::getVP (Element* item)
{
return (*item); // I have a class called Element
}
getVP
しかし、なぜElementクラスが必要なのかはまだはっきりしていません。
struct/classをint型に変換する方法を示しているだけです。それがあなたが望むものでないならば、私は私の答えを削除します。
Elementからを取得しようとしていて、次のようint
にクラスのキャスト演算子を既にオーバーロードしていると仮定します。Element
operator int() { return m_some_int; }
使用できます(アイテムがポインタであると仮定します)
return (int)(*item);
代わりに、ポインタのアドレスを取得しようとしている場合は、次のようにすることができます。
std::size_t Element::get_address(Element* item)
{
return reinterpret_cast<std::size_t>(item);
}