2014-10-08 5 views
0

이상한 문제가 있습니다. 나는 두 가지 함수를 가지고 있는데, 둘 다 ofstream을 참조로 전달했다. 그러나 두 번째 함수를 호출하면 첫 번째 함수의 일부가 인쇄됩니다.ofStream 다른 기능에서 인쇄 중

void GamePlay::dealDominos(ofstream& outStream, int seed){ 
    for(int i = 0; i < 10; ++i) 
    { 

     outStream << "random " << rand() << endl; 

    } 
} 

내 두 번째 기능은 다음과 같습니다 :

NEW MAX [ T 0 8 ] 
NEW MAX random [ T 0 8 ][ T 8 1 ] 
NEW MAX ndom [ T 0 8 ][ T 8 1 ][ T 1 1 ][ T 1 2 ] 
NEW MAX dom [ T 0 8 ][ T 8 1 ][ T 1 1 ][ T 1 2 ][ T 2 11 ] 
MAX SEQ FOR: dom [ T 0 8 ][ T 8 1 ][ T 1 1 ][ T 1 2 ][ T 2 11 ] 

나는 원하지 않는다 :

void GamePlay::findLongestSeq(ofstream& outStream) 
{ 
    outStream << toStringSeq(label, maxSeq) << endl; 
} 

는하지만, 내 출력은 다음과 같습니다 여기

첫 번째 기능입니다 레이블과 시퀀스 사이에 인쇄 할 단어 "random".

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

+0

이 함수는 어떻게 호출됩니까? 다른 스레드에서? – dlf

+0

그들은 메인 클래스에서 호출되고 있습니다. 'GamePlay game; game.dealDominos (outStream, seed); game.findLongestSeq (outStream); ' –

+0

죄송합니다. 댓글에서 코드 구문을 수행하는 방법을 잘 모릅니다. –

답변

1

동일한 기본 파일을 참조하는 두 개의 개별 ofstream 개체가있는 것처럼 보입니다. 파일 위치를 보장하기 위해 모든 쓰기 작업에서 많은 양의 작업을 수행하고 플러시하지 않는 한 꽤 나쁜 아이디어입니다 모든 글에 대해 업데이트됩니다.

+0

개체가 하나뿐이므로 참조로 전달하십시오. –

+1

ofstream이 실제로 cout 또는 cerr이고 이들 중 하나를 사용하는 경우 정확히 다음과 같습니다. 그러니 당신이 cout이나 cerr을 사용하는지 확인하십시오. – dom0

+0

@ dom0, 그것에 대해 좀 더 설명해 주시겠습니까? –