2011-03-18 7 views
1

동적 배열 구조가 있습니다. 제가 역동적이라고 말하면 프로그램이 실행될 때마다 요소의 수가 달라질 수 있습니다. 배열로 인스턴스 변수를 사용하는 데 어려움을 겪고 난 후 형식의 호환되지 않는 형식 이 발생했습니다. 다른 방법이 있습니까? 나는이 클래스 헤더 파일이C++ 인스턴스 변수/힙 배열에 대한 포인터

struct movie 
    { 
    int rank; 
    string title; 
    string distributor; 
    string weekend; 
    string total; 
} ; 

:

//Some code 
movie temparray[linecount]; 
//temparray is filled with various movie structures. 
movies = temparray; 
:

class ReadFile{ 

public: 
    ifstream moviesFile; 
    movie movies[]; 

    ReadFile(string); 
    movie handleLine(string); 
    string getString(vector<char>); 

}; 

이 내가 영화 인스턴스 변수를 초기화하기 위해 노력하고있어 방법입니다

나는이 구조

오류가 발생하는 경우입니다. 내 영화 배열 인스턴스화 작업을 어떻게 수행 할 수 있을까요? 고맙습니다! 당신이 그들에게 할당 할 수

+0

HTML 태그를 사용하는 대신 질문의 서식을 지정하는 동안 코드를 선택하고 Ctrl + K를 눌러 올바르게 서식을 지정하십시오. – Naveen

+0

''ReadFile'은 (펑터가 아닌) 클래스의 이름으로 다소 의심 스럽습니다. 잘 설계된 클래스는 일반적으로 동사가 아닌 명사를 나타냅니다. –

답변

4

배열은

그래서 movies = temparray; 당신은 C 스타일 배열에 대신 std::vector를 사용하는 것이 항상 권장 ++ C에서 불법

입니다 수정 불가능 lvalues입니다

//.... 
public: 
    ifstream moviesFile; 
    std::vector<movie> movies; 

//.... 

//Some code 
movie temparray[linecount]; 
movies.assign(temparray, temparray+linecount); 
+0

롤, 그 말이 맞는! 나는해야 할 것들을 더 복잡하게하려고 노력했다. 고마워요! – Justin

+0

이 경우 네,'std :: vector'는 아마도 더 좋을 것입니다 만, C 스타일 배열보다 _always_ 권장되지는 않습니다 ... –

1

C++에서 알 수없는 크기의 배열을 정의 할 수 없으며 std::vector<movie> movies;을 사용하여 동적 배열을 만듭니다.

관련 문제