2013-01-29 5 views
0

여러분.클래스의 가변 길이 배열 선언

class Solar_system 
{ 
    public: 

    Solar_system() 
    { 
     planet_no = 5; 
    } 

    int planet_no; 
    int planet[planet_no]; 
}; 

오류 제공 : 어떤 도움을 크게 감상 할 수 Solar_system::planet_no

비 정적 데이터 멤버의 잘못된 사용 여기에 코드를 내 조각입니다.

+0

무엇을하려고합니까? 문제를 해결하기 위해 무엇을 시도 했습니까? – Jules

답변

0

저는 C++이라고 가정합니다.

런타임에 배열을 만들 때 동적으로 할당해야합니다. 이처럼 :

http://www.cplusplus.com/doc/tutorial/dynamic/

그래서 당신은 클래스의 포인터를 만들 것입니다 후까지의 배열을 설정하는 대신 자신의 메모리 관리를하는

int * planet; 
int planet_no; 
Solar_system() 
{ 
    planet_no = 5; 
    planet = new int[planet_no]; 
} 
+0

배열을 삭제해야하는지, 삭제해야하는지 알려주실 수 있습니까? –

+0

예, 삭제해야합니다. 클래스 소멸자는 삭제하기 좋은 곳입니다. ~ Solar_system() {delete [] planet;} 그런 식으로 항상 호출됩니다. 배열의 크기를 조정하거나 다시 작성해야하는 경우 배열을 삭제 한 다음 새 메모리 블록으로 설정하십시오. – jneff

0

, 적당한 용기를 사용합니다. 예 : std::vector.

class Solar_system { 
public: 

    Solar_system() 
    { 
     planets_.resize(5); 
    } 

    std::vector<int> planets_; 
};