可以将static_cast类转换为整数

时间:2013-02-10 10:52:09

标签: c++ static-cast

当我尝试将元素*静态转换为int

时,为什么会出现错误
typedef Element* ElementPtr

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

2 个答案:

答案 0 :(得分:2)

不确定你的问题是什么,但我觉得你想要隐式转换功能。 要将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
}

但是仍然不清楚为什么在Element类中需要getVP

它只是向您展示如何将struct / class转换为int类型。如果不是你想要的话,我会删除我的答案。

答案 1 :(得分:1)

假设您正在尝试从Element中获取int并且您已经重载了Element类的强制转换运算符,如下所示:

operator int() { return m_some_int; }

你可以使用(假设item是指针)

return (int)(*item);

相反,如果您尝试获取指针的地址,则可以执行以下操作:

std::size_t Element::get_address(Element* item)
{
    return reinterpret_cast<std::size_t>(item);
}