c++ 추상클래스 공부하다 막혀서 질문드립니다.
글쓴이: goyang132 / 작성시간: 목, 2013/11/28 - 2:40오전
#ifndef SAHPE_H #define SAHPE_H #include <iostream> using namespace std; class Shape{ int index; Shape* next; public: Shape(); void paint(); Shape* add(Shape* p, int index); Shape* getNext() {return next;} int getIndex(); virtual void draw()=0; virtual ~Shape(); }; #endif
#include "Shape.h" Shape::Shape(){ index = 0; next = NULL; } void Shape::paint(){ draw(); } Shape* Shape::add(Shape *p, int index){ this->index = index; this->next = p; return p; } int Shape::getIndex(){ return this->index; } Shape::~Shape(){ if(next) delete next; }
분명 생성자도 잘 통과하는데 왜 this->index와 this->next에서 막히는지 모르겠습니다.
자꾸 저기서 예외처리 되었다고하는데 this->index하고 this->next를 못찾는것같은데...
디버그를 해보면 기호를 찾을수없다고하는데 무슨 이유로 못찾는건지...생성자에서는 찾는데
왜 add만 도착하면 못찾는건지 모르겠네요
File attachments:
첨부 | 파일 크기 |
---|---|
GraphicEditor.zip | 4.93 MB |
Forums:
포인터 오류가..
pLast 값을 사용하셨는데, 첫번째 this->pLast->add를 호출하는 상황에서 pLast가 NULL입니다. 그러면 결국 add 메서드 안에선 this가 NULL이 될수밖에 없고 당연히 add안에서 액세스 바이얼레이션이 발생하는 것이죠.
생성자를 보니 pLast는 NULL로 초기화되어 있습니다. 결국 이 상황을 피할 방법이 없는 셈이죠. 처음부터 pLast를 가지고 있을 수가 없으니..
--
댓글 달기