I tried:
bst.preorderTraverse(&CompanyDatabase.test);
../src/CompanyDatabase.cpp:155: error: expected primary-expression before '.' token
bst.preorderTraverse(&this->test);
ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say '&CompanyDatabase::test'
bst.preorderTraverse(&CompanyDatabase::test);
../src/CompanyDatabase.cpp:155: error: no matching function for call to 'BinarySearchTree::preorderTraverse(void (CompanyDatabase::*)(TreeItemType&))'
../src/BinarySearchTree.h:99: note: candidates are: virtual void BinarySearchTree::preorderTraverse(void (*)(TreeItemType&))