인프런 커뮤니티 질문&답변

yahoo님의 프로필 이미지
yahoo

작성한 질문수

홍정모의 따라하며 배우는 C++

9.6 첨자 연산자 오버로딩 하기

코드 조금 바꿔서 작성 중 에러

작성

·

221

1

안녕하세요, 아래처럼 코드 짜니까 에러가 발생하는데 왜 그럴까요? 교수님 강의에서 관련된 내용을 들었던 것 같은데 못 찾겠네요;;

class IntList
{
private:
    static int m = 10;
    int m_list[m] = { 1, 2, 3, 4, 5, };
...

>>
error: non-const static data member must be initialized out of line
    static int m = 10;

답변 2

2

안녕하세요, 답변 도우미 Soobak 입니다.

정적 멤버 변수는 클래스 선언 내부에서 초기화할 수 없기 때문입니다.
(강의 8.10 정적 멤버 변수2:50 부분 참고)

  • 예시 코드

    class IntList
    {
      public:
        static int m;
        // ...
    };
    
    int IntList::m = 10;

 

또한, 첨부해주신 에러 메시지에는 아직 나와있지 않지만, C++ 에서는 배열의 크기가 컴파일 타임에 알려져야 합니다. 따라서, m_list 배열의 크기를 상수로 선언하셔야 합니다.

1

yahoo님의 프로필 이미지
yahoo
질문자

그렇군요! 상세한 설명 감사합니다 !

yahoo님의 프로필 이미지
yahoo

작성한 질문수

질문하기