I'm looking for patterns or for some ready to use solutions for next problem:
Container with features:
- One element of an arbitrary type storing
- When element is taken from container it gets empty
- When new element is stored, it overwrites previous content
- Thread safety
My naive implementation without thread safety:
template<typename T>
class Boxed {
T* _data;
public:
Boxed()
: _data(nullptr)
{}
Boxed(const T& data)
: _data(new T(data))
{}
~Boxed() {
if(_data != nullptr) {
delete _data;
}
}
inline
void setData(const T& data) {
if(_data != nullptr) {
delete _data;
}
_data = new T(data);
}
inline
T getData() {
T res(*_data);
delete _data;
_data = nullptr;
return res;
}
inline
bool empty() const {
return _data == nullptr;
}
inline
operator bool() cons {
return empty();
}
};
I will be grateful for any help.