【问题标题】:Passing a vector, queue, and pointer to a function将向量、队列和指针传递给函数
【发布时间】:2016-02-21 22:28:47
【问题描述】:

我有一个函数 myfunc(),它需要参数 std::vectorstd::queue 和一个指向 MyClass 对象的指针。

我的函数原型是:

void myFunc(vector<MyClass*>, std::queue<MyClass*>, MyClass*);

我不知道这是否是正确的原型声明。

要调用我的函数,我执行以下操作:

myFunc(myVector, myQueue, MyClassObj);

同样,我不确定这是否完全正确。

最后,我的功能如下:

void myFunc(vector<MyClass*> myVector, std::queue<MyClass*> myQueue, MyClass* myClassObj)
{
   //do something
}

该函数应该在向量中搜索特定项目。如果没有找到,myClassObj 将被推送到队列中。否则,如果找到对象,它将调用另一个函数来设置 myClassObj 的参数之一的值。

我这样做对吗?

谢谢,

【问题讨论】:

  • 如果您目前的方法有任何问题怎么办?
  • @BenjaminBannier Compiler 说“MyClassObj 未在此范围内声明 myQueue.push(myClassObj);
  • @noobgineer,你在函数返回后没有得到结果队列吗?那是你的问题吗?如果是,请用引用函数调用和值函数调用谷歌。
  • @BenjaminBannier 更正,我忘记更改函数中的变量名。更改后现在可以正常编译。注意自己,注意编译器输出。

标签: c++ parameter-passing function-prototypes


【解决方案1】:

"该函数应该在向量中搜索特定项。如果没有找到,myClassObj 将被推送到队列中。否则,如果找到该对象,它将调用另一个函数来设置 myClassObj 的参数之一的值。"

在这种情况下,

  • 通过const&amp; 获取vector
  • queue&amp; .....and
  • MyClass &amp; 或指针,如果你愿意的话

void myFunc(const vector<MyClass*>& myVector, std::queue<MyClass*>& myQueue, MyClass* myClassObj)
{
   //do something
}

【讨论】:

  • 我是否也将原型和函数调用更改为引用跟随?
  • 这里有什么理由使用引用而不是迭代器吗?
  • 好吧,OP没有提到迭代器,与其使用迭代器,我更喜欢使用templates
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 2017-05-16
  • 2021-07-17
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多