//////////// CEditBox.hpp header file
#include <memory>
#include <string>
class CLabel;
class CEditBox
{
public:
CEditBox(std::string);
private:
std::unique_ptr<CLabel> _label;
};
//////////// CLabel.hpp header file
#include <string>
//#include "CLabel.hpp"
class CLabel
{
public:
CLabel(std::string name) : _name(std::move(name)) {}
private:
std::string _name;
};
///////////// CEditBox.cpp source file
//#include "CEditBox.hpp"
//#include "CLabel.hpp"
CEditBox::CEditBox(std::string name)
: _label(new CLabel(std::move(name)))
{
}
///////////// main.cpp source file
//#include "CEditBox.hpp"
int main()
{
CEditBox box("Hello world"); // no need to 'know' CLabel here
}
Ly8vLy8vLy8vLy8vIENFZGl0Qm94LmhwcCBoZWFkZXIgZmlsZQojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8c3RyaW5nPgoKY2xhc3MgQ0xhYmVsOwoKCmNsYXNzIENFZGl0Qm94CnsKICBwdWJsaWM6CiAgICBDRWRpdEJveChzdGQ6OnN0cmluZyk7CiAgcHJpdmF0ZToKICAgIHN0ZDo6dW5pcXVlX3B0cjxDTGFiZWw+IF9sYWJlbDsKfTsKCi8vLy8vLy8vLy8vLyBDTGFiZWwuaHBwIGhlYWRlciBmaWxlCgojaW5jbHVkZSA8c3RyaW5nPgovLyNpbmNsdWRlICJDTGFiZWwuaHBwIgoKY2xhc3MgQ0xhYmVsCnsKICBwdWJsaWM6CiAgICBDTGFiZWwoc3RkOjpzdHJpbmcgbmFtZSkgOiBfbmFtZShzdGQ6Om1vdmUobmFtZSkpIHt9CiAgcHJpdmF0ZToKICAgIHN0ZDo6c3RyaW5nIF9uYW1lOwp9OwoKLy8vLy8vLy8vLy8vLyBDRWRpdEJveC5jcHAgc291cmNlIGZpbGUKCi8vI2luY2x1ZGUgIkNFZGl0Qm94LmhwcCIKLy8jaW5jbHVkZSAiQ0xhYmVsLmhwcCIKCkNFZGl0Qm94OjpDRWRpdEJveChzdGQ6OnN0cmluZyBuYW1lKQogICAgOiBfbGFiZWwobmV3IENMYWJlbChzdGQ6Om1vdmUobmFtZSkpKSAKewp9CgovLy8vLy8vLy8vLy8vIG1haW4uY3BwIHNvdXJjZSBmaWxlCgovLyNpbmNsdWRlICJDRWRpdEJveC5ocHAiCgppbnQgbWFpbigpCnsKICAgIENFZGl0Qm94IGJveCgiSGVsbG8gd29ybGQiKTsgLy8gbm8gbmVlZCB0byAna25vdycgQ0xhYmVsIGhlcmUgICAKfQo=