-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

不太确定你的问题是什么,但我觉得你想要隐式转换功能。要转换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 类型。如果不是你想要的,我会删除我的答案。

于 2013-02-10T10:58:54.267 回答
1

假设您正在尝试int从 Element 获取 a 并且您已经重载了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 回答