Допустим, у меня есть две разные функции. Один является частью класса BST, другой - просто вспомогательная функция, которая будет вызывать эту функцию класса. Я перечислю их здесь.
sieve(BST<T>* t, int n);
эта функция вызывается так: sieve (t, n) объект называется BST t;
Я собираюсь использовать функцию удаления класса в функции sieve для удаления определенных объектов. Я не уверен, как должен выглядеть мой прототип для этой базовой функции? Делаем это:
sieve(BST<int> t, int n)
То, что происходит здесь, все прекрасно компилируется, но когда вызывается функция t.remove, я не вижу реальных результатов. Я предполагаю, потому что это просто создание копии или целого другого t-объекта вместо передачи одного из моей функции main ().
Если я вызываю функцию удаления (t.remove (значение)) в моей основной функции, где был создан исходный объект, он удаляет все должным образом. Как только я начинаю делать это через свою функцию сита, я не вижу изменений, когда я распечатываю это из моей основной функции. Моя основная функция выглядит примерно так:
int main ()
{
int n,
i,
len;
BST<int> t;
cin >> n;
vector<int> v(n);
srand(1);
for (i = 0; i < n; i++)
v[i] = rand() % n;
for (i = 0; i < n; i++)
t.insert(v[i]);
print_stat(t);
t.inOrder(print_data);
sieve(v,t,n);
print_stat(t);
t.inOrder(print_data);
return 0;
}
Так что мои результаты в итоге остаются такими же, хотя мои отладочные операторы в функциях показывают, что они действительно что-то удаляют. Я догадываюсь, где я иду не так, как я передаю объект t в функцию.