// 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 对不起,这是在底部我是一个堆栈溢出的菜鸟。
答案 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旨在
考虑到这一点,
如果我们知道什么是嘘声,那么有人可能会建议更好的方法来验证用户输入。
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;
}
}