2

C++을 사용하여 간단한 터미널 판타지 게임을 만들고 있습니다. 나는 "오류 : 가변 크기의 객체 '항목'이 초기화되지 않을 수 있습니다."라는 오류가 발생했습니다. 다음은 코드입니다.코드 : Blocks Mingw 컴파일러 오류 : 가변 크기 개체가 초기화되지 않을 수 있습니다.

string useItem(int item) 
{ 
    string items[item] = {"HP Potion","Attack Potion","Defense Potion","Revive","Paralize Cure"}; 
} 

이 기능을 사용하여 항목에 액세스하고 항목을 반환 할 수 있기를 원합니다. 이 오류를 어떻게 해결할 수 있습니까? 나는 Code :: Blocks를 mingw 컴파일러와 함께 사용하고있다.

+0

원시 어레이 크기는 컴파일 된 시간에 알려야합니다. 그렇지 않으면 std :: vector Borgleader

+0

'char const * items [] = ...'를 사용해야합니까? –

+0

사용하는 컴파일러와 버전을 기록해두면 도움이됩니다.이 경우 대답은 많이 변경되지 않지만 다른 질문에서는 큰 차이를 만들 수 있습니다. –

답변

2

하나의 가변 길이 배열은 C99 기능이며 ISO C++의 일부가 아니지만 여러 컴파일러가이 기능을 내선 번호 including gcc으로 지원합니다.

string items[] = { ... } ; 

미지의 배열을 : 사용하는 것입니다

The type of the entity to be initialized shall be an array of unknown size or an object type that is not a variable length array type.

및 대체 :

둘째 C99는 가변 길이 배열이 draft C99 standard 섹션 6.7.8초기화에서, 이니셜 라이저를 가질 수 있다고 말한다 크기는 이니셜 라이저의 요소 수에 따라 결정됩니다.

가변적 인 크기의 배열을 갖는 관용적 인 C++ 방법은 std::vector을 사용하는 것입니다.