Не могу статический класс приведения к целому

Почему я получаю сообщение об ошибке при попытке статического приведения элемента * к int

typedef Element* ElementPtr

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

-6

Решение

Не совсем уверен, что ваш вопрос, но я чувствую, что вы хотите неявную функцию преобразования.
Преобразовать Element к инт, ты хочешь operator int()

struct Element
{
operator int()
{
return i;
}
int i;
};

int Element::getVP (Element* item)
{
return (*item); // I have a class called Element
}

Но до сих пор не ясно, зачем вам getVP в классе Элемент.

Это просто чтобы показать вам, как преобразовать struct / class в тип int. Я удалю свой ответ, если это не то, что вы хотите.

2

Другие решения

Предполагая, что вы пытаетесь получить 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);
}
1

По вопросам рекламы [email protected]