#include <iostream>
#include <memory>
template <typename T> class Address
{
private:
T* ptr;
size_t size;
public:
Address(T item) : ptr(&item), size(sizeof(item)) {}
T getItem() const
{
return *ptr;
}
long getAddress() const
{
return (long int ) ptr;
}
long getSize() const
{
return size;
}
};
template <typename T>
std::ostream& operator<<(std::ostream& out, const Address<T> item)
{
out << "nItem: " << item.getItem() << "n";
out << "Address : " << item.getAddress() << "n";
out << "Size : " << item.getSize() << "n";
return out;
}
int main()
{
std::unique_ptr<Address<char>> ptr_addressObj(new Address('P'));
std::cout<< *ptr_addressObj << "n";
}
Produces
Item:
Address : 140720983114340
Size : 1
HOw to get the Item back? Right now it is blank. Same with Address