所以我们假设我有两个不同的函数。一个是BST类的一部分,另一个只是一个帮助函数,它将调用该类的函数。我会在这里列出来。将一个Class对象传递给一个函数(可能通过指针而不是引用)C++
sieve(BST<T>* t, int n);
这个函数被这样调用:sieve(t,n)该对象被称为BST t;
我将使用sieve函数中的类remove函数来移除特定的对象。我不确定这个基本功能的原型应该是什么样子?这样做:
sieve(BST<int> t, int n)
这里会发生什么事是一切编译得很好,但是当t.remove函数被调用我看不出有什么实际效果。我假设,因为它只是创建一个副本或整个其他t对象,而不是从我的main()函数传递一个。
如果我在创建原始对象的主函数中调用remove函数(t.remove(value)),它将正确删除所有内容。一旦我开始通过我的筛选功能进行操作,当我将其从主功能打印出来时,我看不到任何更改。所以我的主要功能看起来是这样的:
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对象传递给函数。
在你的第二个代码块中,你有两个< and one > – John 2008-10-30 19:05:15