2017-01-17 2 views
0

나는 images라는 텍스쳐 벡터를가집니다. 이 클래스를 참조로 Section이라는 클래스에 전달하여 복사하지 않습니다.참조로 클래스에 벡터 전달

이미지가 헤더 파일에 생성됩니다. 나는 내가 그것을 사용하기 전에 초기화대로 벡터가 여전히 존재한다고 생각합니다 참고로 내 이미지를 반환하는 getTextures() 함수를

void ofApp::draw(){ 
if (video0.isFrameNew()){ 
    ofPixels pixels = video0.getPixels(); 
    images.emplace_back(); 
    images.back().allocate(pixels); 
    } 
} 

: 이미지는 텍스처와 함께 추첨 방법에있어서, 내부 만들었습니다 이 함수.

vector<ofTexture> &ofApp::getTextures(){ 
    return images; 
} 

가 나는 getTextures를 사용 보이드 ofApp::setup()

imSec.push_back(Section(getTextures()); 

의 for 루프 내 생성자 호출이()를 사용하여 내 생성자 내 전화에 벡터를 전달하는 단계; 그러나 내 프로그램을 실행할 때 벡터에 대한 내 참조가 작동하지 않는다고해서 벡터의 내용을 그릴 수없는 것 같습니다.

참조로 전달하는 올바른 방법에 도움이 될 것입니다.

+1

'images '는'getTextures()'가 반환 한 참조보다 오래 걸립니까? –

+1

[최소, 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve)를 만들려고 시도하십시오. 그렇지 않으면 의미있는 방식으로 대답 할 수 없습니다. –

+0

확실치 않습니다. 벡터가 범위를 벗어날 수 있으므로 문제가 될 수 있다고 생각합니다. – Elliot

답변

0

함수 getTexture()은 함수가 반환 된 후 벡터에 대한 참조를 반환해야합니다. 해당 함수 내에 벡터를 선언하고 해당 함수에 대한 참조를 반환하면 함수의 반환 후에 벡터의 메모리가 무효화되므로 작동하지 않습니다.

+0

고마워요. 내 헤더 파일에서 내 벡터를 초기화 한 다음 내 드로잉 메서드에서 내부에 항목을 만들었으므로 함수가 반환 된 후에도 여전히 존재하지 않습니까? – Elliot