숙제는 동물 클래스에있는 3 클래스 배열 (새, 포유류, 파충류)을 포함하는 클래스 (레지스터)를 만들어야한다는 것입니다. 동물은 등록자의 친구입니다. 나는 새들의 부분을 보여줌으로써 그것을 단순하게 유지할 것이다.클래스 내부의 클래스 배열 - 동적 배열 문제 (C++)
class Register
{
Bird* birds;
unsigned int birdSize;
public:
...
}
레지스터의 생성자 :
이제 새 배열 한 요소를 추가 레지스터의 기능을Register::Register()
{
this->birds = new Bird[0];
this->birdSize = NULL;
}
상기 입력 CIN이다
레지스터 클래스처럼 보인다.
void Register::add()
{
...
if (birdSize == 0)
{
birds = new Bird[0];
Bird* temp = new Bird[0];
temp[0].add();
this->birds = temp;
birdSize++;
}
else
{
Bird* temp = new Bird[birdSize+1];
for (unsigned int i=0; i<=birdSize; i++)
{
temp[i] = this->birds[i];
}
temp[birdSize+1].add();
birds = new Bird[birdSize+1];
birds = temp;
birdSize++;
}
임시 주소 .add()에는 cin이 있으며 제대로 작동합니다. 프로그램을 실행할 때 사용자는 배열에 2 마리의 새를 추가해야합니다. 문제는 'else'아래에있는 부분에 도달 할 때 발생하므로 배열의 두 번째 요소입니다. 프로그램은 반드시 "temp [birdSize + 1] .add();"에 도달합니다. 실행 중일 때 "xyz.exe가 작동을 멈췄습니다."창이 뜨고 "Fault Module Name : StackHash_7e8e"라는 메시지가 표시되므로 메모리 할당에 문제가있는 것이 확실하지만 문제는 그 때입니다. 디버그 모드에서 문제가되는 행을 찾으려면 모든 것이 잘 작동합니다.
음, 모든 것이 아닙니다. 이 프로그램은 print() 함수를 가지고 있으며 Register에있는 모든 것을 출력합니다. 배열의 두 번째 요소는 첫 번째 요소와 같습니다.
나는 무엇을 해야할지 전혀 모른다. 많은 포럼 게시물을 읽고 cpp 책을 읽고 온라인 자습서를 시청했지만이 문제에 대한 해결책을 찾을 수 없습니다. 도와주세요.
_Dynamic arrays_는 C++에서'std :: vector <>'인스턴스입니다! 내 말은 –