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