나는 아래의 클래스를 통해 학생 성적 레코드를 만듭니다. 생성자는 배열의 메모리를 할당하고 배열의 각 요소에 기본값을 설정합니다. 이 기본값의 값을 전달해야합니다. 내 질문은, 내가 메모리를 할당하고 초기화 목록을 구성하거나 다른 방법으로 배열의 값을 초기화 할 수 있습니다. 나는 동적 할당 new
과 delete
을 사용하지 않을 것이다.배열에 대한 생성자 초기화 목록
//header file for main.cpp
#include<iostream>
using namespace std;
const int SIZE = 5;
template <class T>
class StudentRecord
{
private:
const int size = SIZE;
T grades[SIZE];
int studentId;
public:
StudentRecord(T defaultInput);//A default constructor with a default value
void setGrades(T* input);
void setId(int idIn);
void printGrades();
};
template<class T>
StudentRecord<T>::StudentRecord(T defaultInput)
{
//we use the default value to allocate the size of the memory
//the array will use
for(int i=0; i<SIZE; ++i)
grades[i] = defaultInput;
}
template<class T>
void StudentRecord<T>::setGrades(T* input)
{
for(int i=0; i<SIZE;++i)
{
grades[i] = input[i];
}
}
template<class T>
void StudentRecord<T>::setId(int idIn)
{
studentId = idIn;
}
template<class T>
void StudentRecord<T>::printGrades()
{
std::cout<<"ID# "<<studentId<<": ";
for(int i=0;i<SIZE;++i)
std::cout<<grades[i]<<"\n ";
std::cout<<"\n";
}
#include "main.hpp"
int main()
{
//StudentRecord is the generic class
StudentRecord<int> srInt();
srInt.setId(111111);
int arrayInt[SIZE]={4,3,2,1,4};
srInt.setGrades(arrayInt);
srInt.printGrades();
return 0;
}
std :: vector를 사용할 수없는 이유는 무엇입니까? – UKMonkey
C++에는 메모리 할당을 통하는 경우를 제외하고는 런타임 가변 길이 배열이 없습니다. 따라서 할당을 사용하거나 SIZE의 가능한 최대 값에 충분한 크기의 배열을 사용하고 각 객체에 사용 된 실제 숫자를 저장해야합니다. –