2012-02-27 2 views
0
vector<Flight> flights; 
while (!myReadFile.eof()) { 
    flights.push_back(*(new Flight())); 
// read some info... 
} 

를 벡터에 새 항목을 삽입 할 때 :프로그램이 충돌 두 번째 루프 후 메시지와 함께 프로그램이 충돌

"cpi.exe에서 0x776315de에서 처리되지 않은 예외 :가 0xc0000005 :. 액세스 위반 위치 0xfeeefee2을 읽기"

어떻게 문제를 해결할 수 있습니까?

편집 :

vector<Flight> flights; 
while (!myReadFile.eof()) { 
    flights.push_back(Flight()); 
// read some info... 
} 

난이 시도하고 여전히 두 번째 루프에

편집 충돌 : 전체 시도

int count = 0; 
    myReadFile >> output; 
    while (!myReadFile.eof()) { 
     flights.push_back(Flight()); 
     flights[count].setFlightNum(atoi(output)); 

     myReadFile >> output; 
     int x = atoi(output); 
     flights[count].setStartX(x); 
     myReadFile >> output; 
     int y = atoi(output); 
     flights[count].setStartY(y); 

     count++; 
     myReadFile >> output; 
    } 
+2

당신은 우리에게 생성자 표시 (기본 복사)'Flight'의 수 있습니까? – Naveen

+0

빈 생성자 - 모든 멤버는 int 또는 float입니다. 복사 생성자가 없습니다 – Royi

+0

이것은 라이브 프로젝트입니까? 하늘에있는 우리 친구들을위한 우호적 인 관심사. –

답변

2

직접 스트리밍한다 정수로. "토큰"을 읽어야한다면 std :: string을 사용하지만 문자 배열을 읽는 것은 항상 위험합니다.

의 사용을 싫어 하겠지만 스트림에서 Flight 객체를 생성하는 코드가 있어야합니다.이 코드는 "방해가되지 않는"확장 성이 없습니다. 나는 이것을 위해 공장을 선호한다. 그러나 이제 어쨌든 함수를 작성하자 : 지금

std::istream& operator>>(std::istream& is, Flight& flight) 
{ 
    int flightnum, x, y; 
    if(is >> flightnum >> x >> y) 
    { 
     flight.setFlightNum(flightnum); 
     flight.setStartX(x); 
     flight.setStartY(y); 
    } 
    return is; 
} 

과 :

std::vector<Flight> vec; 

while(myReadFile) 
{ 
    Flight flight; 
    if(myReadFile >> flight) 
     vec.push_back(flight); 
} 
+0

거의, 당신의 코드는 하프 비행을 조용히 읽을 수있게하고 마지막 비행에는 실패합니다. 'while (myReadFile >> FlightNum >> StartX >> StartY) ... –

+0

내 코드와 어떤 차이가 있는지 모르겠지만 지금은 작동합니다. 덕분에 – Royi

+0

네, 그냥 그렇게 할 수 있습니다. 루프 외부의 객체로 스트리밍하는 것을 선호하지만 3 개의 int를 사용하고 테스트의 경우 하나만 수행 할 수있었습니다. 나는 Flight를 절반 만들지 만 스트리밍은 여전히 ​​실패 할 것이고 벡터에 추가되지 않을 것입니다. – CashCow

0

하면서

vector<Flight> flights; 
while (!myReadFile.eof()) { 
    flights.push_back(Flight()); 
    // read some info... 
} 
관련 문제