Member 13041778 Ответов: 1

Проблема C++ с перегруженным конструктором и массивами


Мне трудно понять синтаксис того, как я должен вызывать функцию-член, чтобы скопировать значения моего массива в соответствующие переменные-члены. Это специально для перегруженного конструктора, потому что я думаю, что все остальные функции верны, но они могут и не быть таковыми.

Student.cpp
#include <iostream>
#include <fstream>
#include <string>
#include "Student.h"
using namespace std;

void Student::setID(int tID)
{
	ID = tID;
}

void Student::setFName(string f)
{
	firstName = f;
}

void Student::setLName(string l)
{
	lastName = l;
}

void Student::setScores(int list[])
{
	for (int i = 0; i < 5; i++)
		scores[i] = list[i];
	//scores[5] = list[5];
}

int Student::getID()
{
	return ID;
}

string Student::getFName()
{
	return firstName;
}

string Student::getLName()
{
	return lastName;
}

int Student::getWeightedTotal()
{
	int WeightedTotal = 0;
	WeightedTotal = 25 % (scores[0]) + 25 % (scores[1]) + 30 % (scores[2]) + 10 % (scores[3]) + 10 % (scores[4]);
	return WeightedTotal;
}

char Student::getGrade() // should be working 
{
	char grade = 0;
	if (getWeightedTotal() >= 90)
		grade = 'A';
	else if (getWeightedTotal() >= 80)
		grade = 'B';
	else if (getWeightedTotal() >= 70)
		grade = 'C';
	else if (getWeightedTotal() >= 60)
		grade = 'D';
	else
		grade = 'F';
	return grade;
}

void Student::printStudent()
{
	cout << "Student ID" << "    " << "Full Name" << "         " << "Scores" << "     " << "Weighted Total" << "     " << "Grade" << endl;
	cout << ID << "       " << firstName << " " << lastName << " " <<
		scores[0] << scores[1] << scores[2] << scores[3] << scores[4] << " " << getWeightedTotal() << "   " << getGrade() << endl;
}

Student::Student()
{
	ID = 0;
	firstName = "";
	lastName = "";

	for (int i = 0; i < 5; i++) // for loop to set each element to 0
		scores[i] = 0;


	//scores[5] = { 0 };

}

Student::Student(int tID, string f, string l, int list[])
{
	setID(tID);
	setFName(f);
	setLName(l);
	for (int i = 0; i < 5; i++)
		setScores(list[i]);
	//setScores(list);


}

Проблема находится прямо над этим текстом в перегруженном конструкторе, и я не знаю, что делать

Что я уже пробовал:

Я пытался
for (int i = 0; i < 5; i++)
		setScores(list[i]);

Тоже пробовал просто
setScores(list);

также пробовать
for (int i = 0; i < 5; i++)
		scores[i] = list[i];

1 Ответов

Рейтинг:
2

CPallini

Правильный синтаксис таков

Student::Student(int tID, string f, string l, int list[])
{
  setID(tID);
  setFName(f);
  setLName(l);
  setScores(list);
}



Предполагая, Student.h содержит что-то вроде
class Student
{
  int ID;
  int scores[5];
  string firstName, lastName;
public:

  void setID(int tID);
  void setFName(string f);
  void setLName(string l);
  void setScores(int list[]);
  int getID();
  string getFName();
  string getLName();
  int getWeightedTotal();
  char getGrade(); // should be working 
  void printStudent();
  Student();
  Student(int tID, string f, string l, int list[]);

};


Код компилируется и выполняется правильно со следующими основными функциями:
int main()
{
  int score[] = {10,9,8,7,6}; 
  Student s(42, "Foo", "Bar", score);
  s.printStudent();
}