Cpp No Default Constructor Exists For A Reason