배경 정보 : 나와 2 명의 친구가 C++에서이 플랫폼 게임을 도움을 주며 och sfml 및 box2d로 학교 과제를 작성합니다. 요구 사항 중 하나는 "MVC 패턴"을 따르는 것입니다.C++ 벡터가 추상 클래스를 반복합니다.
모델에 Bullet 및 Character와 같은 클래스를 생성했습니다. 그리고 BulletView와 CharacterView (둘 다 추상 클래스 인 sf :: Drawable을 상속받습니다). 이
void WorldView::drawBullets()
{
std::vector<BulletView*>::iterator it;
for (it = bullets.begin() ; it < bullets.end(); it++)
window->draw(**it);
}
void WorldView::drawCharacters()
{
std::vector<CharacterView*>::iterator it;
for (it = characters.begin() ; it < characters.end(); it++)
window->draw(*it);
}
같은
대신 도면에 대한 코드를 복제의그리고이 두 가지 방법의 drawBullets 및 drawCharacter 나는 다음과 같이 보일 것이다 polymorhism를 사용하여보다 일반적인 방법을 싶습니다
void WorldView::drawVector(const std::vector<sf::Drawable*>& vector)
{
std::vector<sf::Drawable*>::iterator it;
for (it = vector.begin() ; it < vector.end(); it++)
window->draw(**it);
}
bulletView 벡터는 다음과 같이 선언됩니다.
std::vector<BulletView*> bullets;
Can 그래도이게 작동하지 않아. 그리고 나는 C++에 익숙하지 않으므로 자비를 베풀어주십시오! 나는 검색을 시도했지만 매우 구체적인 답변을 찾지 못했습니다.
오류 컴파일하는 동안 오류가 발생합니다.
,536,오류 8 오류 C2679 : 이진 '='없음 연산자> 유형 오퍼랜드 우측 걸린다 발견 'Vector_const_iterator을 표준 : _을 < _Myvec>'(또는 존재 용인> 변환) C : \되지 사용자 \ niklas \ multiplaya \ sfml 테스트 \ sfml 테스트 \ view \ worldview.cpp 409> 1 SFML_Test
오류 7 오류 C2664 : 'mp :: WorldView :: drawVector': 매개 변수 1을 변환 할 수 없습니다 'std :: 벡터 < _Ty> CONST STD '에서': 벡터 < _Ty> & '에 C : \ 사용자 \ 니클 \ multiplaya \ sfml> 시험 \ sfml 테스트 \ 뷰 \의 worldview.cpp 402 1 SFML_Test
'std :: vector bullets;'는 유효한 선언이 아닙니다. 벡터의 템플릿 유형은 무엇입니까? – James
@Autopulated 그것은 형식 문제였습니다. – juanchopanza