저는 최근에 C++로 시작했고 포인터에 대한 개념과 배열에 대한 연결을 잘 모르겠습니다. Term과 Polynom의 두 클래스가 있습니다. 나는 사용자가 2 개의 숫자를 입력 할 수있게하는 메인 루프를 가지고있다. 그런 다음 해당 숫자가 "Term"개체에 추가되고 해당 개체가 "Polynom"개체에 추가됩니다. 루프가 실행될 때마다 새로운 "Term"객체가 생성됩니다.C++에서 포인터와 메모리 할당
//These lines are executed until the user is done entering numbers
potens = new Term;
potens->sattPotens(kinput, ninput);//Add values to "Term object"
poly.addTerm(potens);//Add "Term" object to "Polynom" object
"Polynom"개체는 프로그램에서 한 번만 생성됩니다. "Polynom"클래스에서 "Polynom"오브젝트에 추가 된 모든 "Term"오브젝트를 저장하기 위해 "Term"포인터를 사용합니다. "Polynom"클래스의 "Term"포인터는 "Polynom"생성자에서 한 번 시작됩니다.
void Polynom::addTerm(Term *t){
*(term+antal_termer) = *t;//This is were the program crashes
antal_termer++;
}
내가 내가 "기간"개체를 저장하는 포인터 대신 벡터를 사용할 수 있습니다 알고 있지만 내가 어떻게 포인터 일을 배우려고 노력하고있다. 또한 메인 루프에서 생성 된 객체를 삭제해야 할 때도 확신 할 수 없습니다. 루프가 실행될 때마다 새로운 "용어"개체가 만들어 지지만 절대로 삭제하지 않습니다.
편집 : "Polynom"클래스에 "Term"개체를이 방법으로 할당했습니다. term = new Term []; 나는 term = new Term으로 변경했다. 하지만 용어를 실행할 때 여전히 충돌합니다 [antal_termer] = * t;
당신은 term''의'Polynom' 생성자 및 정의를 표시 할 수 있습니다. – hmjd
'antal_termer'가 생성자에서 초기화 되었습니까? 또한'AddTerm()'에 10 개 이상의'Term' 객체를 저장하지 못하게해야합니다. – hmjd
생성자에 antal_termer = 0을 추가했는데 감사합니다.나는 객체가 생성 될 때 모든 변수가 자동으로 0으로 초기화되었다고 생각 했습니까? – user1163392