클래스에서 static const string 초기화

static const 멤버 변수는 클래스 안에서 초기화 해도 되는 거 아닌가요? 에러메세지에서는 out of line에서 초기화하라네요.

#define은 안 쓰고 싶은데 어떡하면 되나요

에러메세지

Static data member of type 'const string' (aka 'const basic_string<char, char_traits<char>, allocator<char> >') must be initialized out of line member

소스코드

class A {
   private:
      static const string RECTANGLE = "rectangle";
}

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    static const 멤버 변수를 클래스 안에서 초기화할 수 있는 경우는

    1. integral타입(int, float등)
    2. enum타입

    의 경우에만 가능합니다. 질문하신 경우는 string이므로 class 밖에서 초기화해야 합니다.

    yourheader.h)

    class A {   
    private:      
      static const string RECTANGLE;
    };
    

    yoursource.c)

    const string A::RECTANGLE = "rectangle";
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.