2017-04-07 38 views
0

这里是我的代码的一小部分:具有多种类型的类数组?如何访问数组中的一个类型?

class Student 
{ 
    private: 
     string ID, fname, lname, level; 
     double gpa; 
} 

所以我们可以说我做一个数组a []类型的学生,有没有访问只是双“政府采购协定”每个数组元素的一种方式?不完全确定如何做到这一点。任何帮助,将不胜感激。我需要学习如何更好的谷歌,因为我觉得这不应该太难以查找,但我仍然无法找到我所期待的。

+0

related/dupe:http://stackoverflow.com/questions/15836455/accessing-a-member-function-of- an-object-in-an-an-array – NathanOliver

+1

当你编写明显的'studentArray [0] .gpa'时会发生什么?你试过了,对吧? – Arkadiy

+0

@Arkadiy我试过了studentArray.gpa [],它产生了错误。我找不到正确的语法,所以我想我可以问这个论坛,对不起。 – Everlit

回答

3

如果你有一个数组

std::array<Student, 10> students; 

可以说

for (auto const& student : students) 
{ 
    std::cout << student.gpa << " "; 
} 

你可以明显地做到这一点的任意元素以及

students[i].gpa = 4.0; 

当然,你必须做出确定你有public方法访问这些成员,如果他们被指定private

class Student 
{ 
public 
    Student() = default; 
    Student(double _gpa) : gpa(_gpa) {} 

    double get_gpa() const { return gpa; } 
    void set_gpa(double _gpa) { gpa = _gpa; } 

private: 
    double gpa = 0.0; 
} 

然后

students[i].set_gpa(4.0); 
0

我看到CoryKramer展示了如何用std::array做到这一点,但如果你只是想用一个正常的数组,这里是你应该做的:

#include <cstdio> 
#include <string> 

class Student 
{ 
public: 
    double get_gpa() {return gpa;} 
    void set_gpa(double _gpa) {gpa=_gpa;} 
private: 
    std::string ID, fname, lname, level; 
    double gpa; 
}; 

int main() { 
    Student a[30]; 
    //Initialize 
    for(int i = 0; i < 30; i++) { 
    a[i].set_gpa((double)i/7.5); 
    } 
    //Print out 
    for(int i = 0; i < 30; i++) { 
    printf("a[%i].gpa = %f\n",a[i].get_gpa()); 
    } 
} 

基本上你只是做Student a[30];来创建一个数组中的三十名学生,那么你可以初始化他们的值,使其与不同10循环或从“教师”输入。最后,你可以打印他们使用另一个循环后来像这样:printf("%f\n",a[i].get_gpa());或与std::cout这将是'