У меня есть простой класс обертки для целочисленных типов, определяемого следующим образом:Использование класса оболочки как указателя на тип, который он обертывает?
class Integer {
public:
Integer() {
}
Integer(const int& value) {
this->value = value;
}
int toInt() const {
return value;
}
operator int() const {
return toInt();
}
private:
int value = 0;
};
Что я хотел бы сделать, это передать класс выше функции, которая имеет подпись, как это: doSomething(int* value)
Если бы я использовать обычный INT, я мог бы просто сделать:
int value = 5;
doSomething(&value);
Однако при использовании класса обертки я не могу, так как он будет использовать указатель на класс, вместо фактического основного стоимость. Я знаю адресного оператора operator&
, который я мог бы использовать для возврата указателя на значение, но это помешало бы мне получить указатель на сам класс, если мне это нужно.
Так что в идеале был бы способ, который позволил бы мне использовать &myclass
, чтобы получить указатель на класс или базовое значение, в зависимости от того, что необходимо.
Есть ли такой способ?
Почему вы хотите реализовать такой класс? Это проблема [xy] (http://xyproblem.info/)? – Xiobiq
Вы можете перегрузить '&', но затем, чтобы получить адрес класса, вам нужно будет использовать 'std :: addressof'. Тем не менее, то, что вы делаете, против хорошего дизайна. – Arunmu
@Polikdir Я реализовал этот класс, чтобы я мог обеспечить постоянный целочисленный размер в памяти на разных платформах. – Qub1