나는이 테마에 관한 몇 가지 게시물을 읽고 객체 포인터의 stl 목록을 사용하여 모르겠다. 반복자를 통해 요소 함수에 액세스하려고 할 때 응용 프로그램이 오류 런타임을 얻는다. 널 포인터. 누군가 그걸 도와 줄까요 ?? 어떤 도움을 주셔서 감사합니다. 미리 감사드립니다.stl 객체 포인터의 반복자 목록
typedef std::list<Actor> listActors;
listActors listactors = pMain->Actors();
listActors::iterator iter = listactors.begin();
std::string nameactor;
nameactor = (*iter)->getName();//Here the app get a run time error of null pointer
전적으로 목록이 채워진 방식에 따라 다릅니다. 당신은 우리에게 그 코드를 보여주지 않았습니다. 하지만 내 생각 엔 첫 번째 요소는 null 포인터입니다 ... –
Actor 객체에 대한 포인터가 아니라 목록에 Actor 객체를 저장합니다. 즉, 요소에 -> 연산자를 적용 할 수 없으므로 컴파일 오류가 발생합니다. 귀하의 코드는 다음과 같이 동작합니다 : 'Actor a; a-> getName(); ' 올바름 :'Actor a; a.getName();' –
@DavidFrank : 코드가 표시된대로 정확합니다. 또 다른 가능성은 LarriPapi가 올바른 코드를 보여주지 못했고 목록이 실제로 포인터의 목록이라는 것입니다. 우리는 모두 짐작하고 있기 때문에 목록은 비어 있습니다 ('begin() == end()').이 경우'iter'의 역 참조가 유효하지 않습니다. –