How do I create an array of objects?

I've written the following program. I want to create an array of objects of the following class. How do I create the array & take input into the object and pass the object to the array?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <bits/stdc++.h>

using namespace std;

class student
{
    string name;
    string id;
    double balance;

public:

    student(string n,string i, double bal)
    {
        name=n;
        id=i;
        balance=bal;
    }

    string getName()
    {
        return name;
    }

    string getID()
    {
        return id;
    }

    double getBalance()
    {
        return balance;
    }

};

class student_waiver:public student
{
    double cgpa;

public:
    student_waiver(string n,string i, double bal, double c):student(n,i,bal)
    {
        cgpa=c;
    }

    int wav_cal()
    {
        if(cgpa<3.5)
            return 0;
        else if(cgpa>3.5)
            return 20;
    }

    double cur_bal()
    {
        double temp = wav_cal();

        double cb;

        if(temp==20)
            cb=(getBalance()-(getBalance()*.20));
        else
            cb=getBalance();

        return cb;
    }


};

int main()
{
    string n,i;
    double b,c;

    getline(cin,n);
    cin>>i;
    cin>>b>>c;

    student_waiver s(n,i,b,c);

    cout<<"Name : "<<s.getName()<<endl;
    cout<<"ID : "<<s.getID()<<endl;
    cout<<"Balance : "<<s.getBalance()<<endl;
    cout<<"Waiver : "<<s.wav_cal()<<"%"<<endl;
    cout<<"Current Balance : "<<s.cur_bal()<<endl;

    return 0;
}


I've tried the following approach but it doesn't work.

1
2
3
4
5
6
7
8
9
student_waiver s[5];

for(int i=0; i<5; i++)
{
    getline(cin,n);
    cin>>i;
    cin>>b>>c;
    s[i](n,i,b,c);
}
Last edited on
1
2
3
4
5
6
7
8
9
10
student_waiver s[5];

for(int i=0; i<5; i++)
{
    getline(cin,n);
    cin>>i;
    cin>>b>>c;
    s[i](n,i,b,c);
    s[i] = student_waiver(n, i, b, c);
}
Or better use vector and use:
s.emplace_back(n, i, b, c)
It shows an error for the first approach-

77|error: no matching function for call to ‘student_waiver::student_waiver()’|

for second approach it shows -
error: invalid conversion from ‘int’ to ‘const char*’ [-fpermissive]|

@MiiNiPaa
In first case you need to provide default constructor for your class. As arrays are initializated at the moment of creation.

In second case a) show what line error is pointing to; b) fix problem in loop:
1
2
3
 for(int i=0; i<5; i++)
//...
cin>>i //Overwriting loop variable 
Topic archived. No new replies allowed.