如何在main中调用此函数

时间:2015-07-18 23:17:05

标签: c++ debugging

        // pointer to functions
#include <iostream>
#include <vector>
using namespace std;

struct boo{
    string u;
    int p;
};

vector <boo> om(boo &bo){
    cin >> bo.u;
    cout << bo.u;
}

int main(){
    string q;
    vector <boo> b;
    om(b);
}

好的,我需要了解如何将vector<boo> om(boo &bo)写入main()。我总是得到一些类型的错误,我需要帮助。我不能把这个函数调成main,因为我只是不知道怎么把它称为main。我知道如何致电om([I just need help with this part])我不知道该填写什么。

P.S 对不起,这是在底部我是一个堆栈溢出的菜鸟。

1 个答案:

答案 0 :(得分:3)

在黑暗中拍摄,因为这似乎是最可能的意图。如果我错了,希望它仍然是教学的。

#include <iostream>
#include <vector>

我删除了这里的using namespace std,因为它很危险。不相信我?快速搜索。 StackOverflow上堆满了“WTF正在进行中?”解析为“std名称空间中的某些内容与变量名称相同的问题。”

struct boo 
{
    std::string u; 
    int p;          
};

我已经离开了Boo,让OP能够识别它。但是,描述性名称确实有助于您的代码解释自己。除了OP之外,没有人知道boo代表什么以及应该如何使用它或它的成员代表什么以及如何使用它们。这限制了我们协助OP提供调试支持和建议的能力。

开启功能om。再一次,可怕的名字。函数名称应该提供一些关于函数功能的提示。

假设:

Om旨在

  1. 读入输入以获取填写boo结构所需的数据
  2. 将boo结构放入main的vector b
  3. 考虑到这一点,

    1. 如果用户输入的输入不正确,则无需返回任何错误代码以外的任何内容。
    2. 唯一值得传递的是对向量的引用。该引用允许修改调用者提供的向量。
    3. 如果我们知道什么是嘘声,那么有人可能会建议更好的方法来验证用户输入。

      void om(std::vector<boo> &bo)
      {
          boo temp; //start by making a temporary boo
          std::cin >> temp.u; // read user input into the temporary boo
          // removed the print out here
          bo.push_back(temp); // copy the temporary boo into the vector
      }
      
      更改

      main以删除未使用的字符串q并输出vector b

      的内容
      int main()
      {
          std::vector<boo> b; // usual nagging about non-descriptive name
          om(b);
          for (boo testboo: b)
          { // print all boos in b
              std::cout << testboo.u << std::endl;
          }
      }
      

      作为一个可以用来试试并玩游戏的切割粘贴块:

      #include <iostream>
      #include <vector>
      
      struct boo
      {
          std::string u;
          int p;
      };
      
      void om(std::vector<boo> &bo)
      {
          boo temp; //start by making a temporary boo
          std::cin >> temp.u; // read user input into the temporary boo
          // removed the print out here
          bo.push_back(temp); // copy the temporary boo into the vector
      }
      
      int main()
      {
          std::vector<boo> b; // usual nagging about non-descriptive name
          om(b);
          for (boo testboo: b)
          { // print all boos in b
              std::cout << testboo.u << std::endl;
          }
      }