0

I am trying to make a program that takes in the ID and marks of each student with user input using template class. But when I try to create the student array, these errors occured.

darkxith@DESKTOP-2UFE545:~/proA2$ g++ test.h test.cpp -o test
test.cpp: In function ‘int main()’:
test.cpp:80:59: error: expression list treated as compound expression in initializer [-fpermissive]
         student<string, int> student[i](id, eng, math, jan);
                                                           ^
test.cpp:80:59: error: array must be initialized with a brace-enclosed initializer [-fpermissive]
test.cpp:80:59: error: conversion from ‘int’ to non-scalar type ‘student<std::__cxx11::basic_string<char>, int>’ requested
darkxith@DESKTOP-2UFE545:~/proA2$ 

This is my header file:

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

template<class T, class U>
class student
{
    private:
        T id;
        U eng, math, jan, total;
    public:
        student (T id, U eng, U math, U jan)
        {
            id = id;
            eng = eng;
            math = math;
            jan = jan;
            total = eng + math + jan;
        }
};

This is my cpp file:

#include <string>
#include <iostream>
#include <exception>
#include "test.h"
using namespace std;
#define MAX 10

int main()
{
    string id;
    int eng, math, jan, i;
    for ( i = 0; i < MAX; i++)
    {
        cout << i+1 << "番目の学生データを入力してください。" << endl;
        cout << "IDを入力してください:";
        cin >> id;

        cout << "英語の点数:";
        cin >> eng;
        
        cout << "数学の点数:";
        cin >> math;

        cout << "国語の点数:";
        cin >> jan;

        student<string, int> student[i](id, eng, math, jan);
    }
}

If the student class wasn't declared array, it works fine but I need to input multiple student data so I am currently stuck in this step.

0 Answers0