У вас есть циклическое включение с 2 файлами, и из-за #Pragma оба файла включаются только один раз, и поэтому BSTNode сначала анализируется и включает в себя BST, но затем BST больше не включает BSTNode (потому что этооднажды)
это приводит к тому, что BST не знает, что такое BSTNode, решение будет следующим:
Удаление включения и вперед, объявляющее класс следующим образом:
#pragma once
using namespace std;
class BSTNode; //Forward declare class so that BST knows BSTNode (move include to .cpp file)
class BST
{
private:
BSTNode* root;
public:
BST(void);
bool insert(int );
int search(int);
~BST(void);
};
Пример основной функции:
int main( int argc, const char* argv[] )
{
printf( "\nHello World\n\n" );
}