C#에서 C++을 처음 사용했습니다. 다음 코드는 작동하지 않으며 필요한 코드가 무엇인지 잘 모르겠습니다. 그것이 작동하지 않는 이유와 적절한 변화가 무엇인지 이해할 수 있도록하는 통찰력은 인정 될 것입니다. 내가 마지막 줄을 주석 경우파생 된 개체에 대한 포인터 컬렉션을 관리하는 가장 좋은 방법
C2284 "cannot convert parameter 1 from 'std::unique_ptr<_Ty> *' to 'std::unique_ptr<_Ty> *&&'
, 그것은 잘 컴파일 :
// GamePlayScreen derives from ScreenBase
std::unique_ptr<GameplayScreen> m_game(new GameplayScreen());
// MenuScreen derives from ScreenBase
std::unique_ptr<MenuScreen> m_menu(new MenuScreen());
// PauseScreen derives from ScreenBase
std::unique_ptr<PauseScreen> m_pause(new PauseScreen());
std::vector<std::unique_ptr<ScreenBase>*> screens;
screens.push_back(&m_game); // this gets the error
나는 오류가 컴파일 얻을.
기본적으로 나는 파생 된 항목의 모음 (또는 그 대신 포인터)을 갖고 싶습니다. 나는 '가리키고 및/또는 참조하는'다양한 방법을 사용하여 매개 변수와 다양한 방법으로 T를 설정하는 시도했습니다 vector<T>
하지만 솔루션은 나를 eludes.
@JesseGood 원하는 유형을 얻는 방법에 대한 해답을 가지고 : 다음은 모범 사례를 다음과 영업 이익의 문제에 대한 컴파일 가능한 스케치입니다 포인터가 당신의 목표입니다. @Alf는 대부분 shared_ptr을 사용하는 것이 좋습니다. 이 기사는 관심의 대상 일 수 있습니다 : http://hostilefork.com/2009/07/10/smart-pointer-casting-study/ – HostileFork