将向量结构传递给函数

时间:2014-12-12 20:13:06

标签: c++

我在如何调用我的功能方面遇到了麻烦,我现在已经彻底搜索了一个多小时,似乎无法找到答案。

示例代码:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

struct student
{
    string first
    string last
}

void lookup_student(vector <student> *classes);

int main()
{
    vector <student> classes;    
    //put stuff here that fills up vector and such    
    lookup_student(&classes);    
    return 0;
}

void lookup_student(vector <student> *classes)
{
    cout << classes[0].first;
}

我刚刚在现场做了这个,因为我目前的程序目前大约有300行,这个例子正好解释了我需要什么。我确定要么在函数中声明结构向量错误,要么我在main中做错了。任何帮助将不胜感激。

它给我的错误信息是std::vector <student> has no member named first

2 个答案:

答案 0 :(得分:2)

你必须取消引用指针

cout << (*classes)[0].first;

我建议传递矢量as a const reference,然后你可以像使用它一样使用它

void lookup_student(vector<student> const& classes)
{
    cout << classes[0].first;
}

然后你只需将矢量传递给

int main()
{
    vector<student> classes;    
    //put stuff here that fills up vector and such    
    lookup_student(classes);    
    return 0;
}

答案 1 :(得分:0)

如果您遇到指针困难,可以使用引用来更容易操作: -

void lookup_student(const vector <student>& classes)
{
    //classes[i].first
}

并将其称为

lookup_student(classes);