gpt4 book ai didi

c++ - 将类对象传递给函数(可能通过指针而不是引用)C++

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:27 25 4
gpt4 key购买 nike

假设我有两个不同的函数。一个是 BST 类的一部分,一个只是将调用该类函数的辅助函数。我会在这里列出它们。

sieve(BST<T>* t, int n);

这个函数是这样调用的: sieve(t,n) 这个对象叫做BST t;

我将在筛选函数中使用类删除函数来删除特定对象。我不确定这个基本功能的原型(prototype)应该是什么样子?这样做:

sieve(BST<int> t, int n)

这里发生的是一切都编译得很好,但是当调用 t.remove 函数时我看不到实际结果。我假设是因为它只是创建一个拷贝或整个其他 t 对象,而不是从我的 main() 函数传递一个对象。

如果我在创建原始对象的主函数中调用删除函数 (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 对象传递给函数。

最佳答案

sieve(BST<int>& t, int n)

& 指定通过引用 而不是值传递。 :-)

关于c++ - 将类对象传递给函数(可能通过指针而不是引用)C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/251325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com