【问题标题】:how to pass a class object as parameter如何将类对象作为参数传递
【发布时间】:2015-03-19 05:10:09
【问题描述】:

所以我有两个类,每个类代表一个链表

class list1 {

      //some functions

};

class list2 {

      //some functions

}

我的主函数有两个对象 LL1 和 LL2,分别用于 list1 类和 list2 类。

int main()
{
     list1   LL1;
     list2   LL2;
}

现在我想调用一个函数 merge 将这两个列表合并在一起。并将列表的两个对象作为参数。

让我们调用函数

void merge(object list1, object list2)  

所以我可以像这样在 main 中调用它

merge(LL1, LL2);

这可能吗?

【问题讨论】:

  • 如果没有将空间传递给方法,结果合并列表会在哪里结束,方法也不返回合并列表?是list1 类型的合并列表还是list2 类型的合并列表?忽略这个问题,如果您打算修改任一输入列表,您只需执行void merge(list1& l1, list2& list2),否则,您只需执行void merge(const list1& l1, const list2& list2)。但我绝对建议你做一些更基础的 C++ 教程,看来你还没有完全掌握基本的机制。
  • 我正在编写一个函数来合并两个链表。相信我,我了解基础知识。谢谢你的哲学。 @RSahu
  • 不要粗鲁,但您只是问如何将对象作为方法参数传递。你显然没有掌握基础知识。如果您阅读过诸如this one 之类的介绍性教程,那么您已经有了答案。
  • 为了软化我之前的评论,C++ 是一个严厉的情妇。如果你不花时间确保在进入更复杂的结构之前对语言的工作原理有一个非常扎实的掌握,它会咬你并把你吐出来(我的意思是你会写很多非常非常错误的代码)。我们都去过一次,没有什么可耻的。与其他语言相比,C++ 的宽容度要低得多。

标签: c++


【解决方案1】:

是的,可以将对象作为参数传递。

class list {

      //some functions

};

list merge(const list& l1, const list& l2)
{
  list mergedList;
  //logic to merge l1 and l2 and copy it to mergedList
  return mergedList;
}

int main()
{
     list   LL1;
     list   LL2;

     list mergedList = merge(LL1, LL2);
}

【讨论】:

  • 这将创建传递给 merge 的列表的副本,这可能不是 OP 的意图,尤其是因为 merge 目前无法返回任何内容。
  • @aruisdante 同意。谢谢..更新的答案。
  • 它仍在创建不必要的副本。它们应该是引用或 const 引用。
  • list merge(list& l1, lis&t l2) 是我相信@aruisdante 的意思
猜你喜欢
  • 2012-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多