В предыдущих ответах указывалось, что неразрешенная внешняя ошибка, вероятно, вызвана деструктором tNode, который объявлен, но не определен в модуле перевода, который может видеть компоновщик.
Однако у вас есть вторая ошибка:Вы, кажется, верите, что установка n на ноль делает то, чего не делает.Значение указателя n передается по значению, а не по ссылке, так что изменение его значения (например, путем присвоения NULL) не имеет никакого эффекта после возврата функции.
Это, вероятно, приведет к ошибкам при очистке дерева иожидать, что указатель корневого узла был установлен в NULL, когда он остается висящим указателем на освобожденную память.Результатом будет ошибка времени выполнения, а не ошибка компоновщика.
void BinSearchTree::Clear(tNode **N)
{
tNode * n = *N;
if (n->left != NULL)
Clear(n->left);
if (n->right != NULL)
Clear(n->right);
delete n;
*N = NULL;
size--;
}
Будет делать то, что вы ожидаете.