#pragma once #include namespace Generic { template class DirectedNode { public: DirectedNode(T value, std::shared_ptr left = nullptr, std::shared_ptr right = nullptr); ~DirectedNode(); protected: T mValue; std::shared_ptr mLeft; std::shared_ptr mRight; }; template DirectedNode::DirectedNode(T value, std::shared_ptr left, std::shared_ptr right) { this->mValue = value; this->mLeft = left; this->mRight = right; } template DirectedNode::~DirectedNode() {} }