-7

element* を int に静的にキャストしようとするとエラーが発生するのはなぜですか

typedef Element* ElementPtr

int Element::getVP (ElementPtr item)
{
return static_cast <int>(item); // I have a class called Element
}
4

2 に答える 2

2

何が質問なのかよくわかりませんが、暗黙の変換関数が必要だと思います。Elementintに変換するには、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型に変換する方法を示しているだけです。それがあなたが望むものでないならば、私は私の答えを削除します。

于 2013-02-10T10:58:54.267 に答える
1

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);
}
于 2013-02-10T11:03:32.923 に答える