저는 인스턴스화하고 싶지 않은 수업을 작성하고 있습니다. 모든 멤버는 정적입니다. 이 클래스는 마이크로 컨트롤러의 주변 장치를 나타냅니다. 마이크로 컨트롤러에 그 주변기기의 인스턴스가 하나 밖에 없기 때문에 그 클래스의 인스턴스를 생성하는 것은 의미가 없습니다. 클래스는 해당 주변 장치의 데이터 및 기능 만 그룹화합니다.인스턴스가 아닌 클래스의 정적 멤버 인 배열의 크기를 정의하는 방법은 무엇입니까?
클래스의 데이터 멤버 중 하나는 클래스 사용자가 컴파일 할 때 정의해야하는 크기의 배열입니다. 이 클래스의 객체를 만들 수 있다면 생성자의 이니셜 라이저 목록에서 const를 초기화 할 수 있지만 실제로이 클래스의 인스턴스를 만들고 싶지는 않습니다. 템플릿을 사용하고 배열 크기를 템플릿 매개 변수로 설정할 수도 있지만 모든 멤버 호출에 my_class<5>::do_something()
과 같은 것을 사용해야합니다. 이 문제를 해결할 더 간단한 방법이 있습니까? 내 수업을 이런 식으로하고 싶습니다.
class my_class
{
private:
static const int _size;
static int _array[_size];
public:
static void array_size(int size) { _size = size; }
static void do_something() { /* .... */ }
};
을; }'해야합니까? – wally
싱글 톤 클래스를 고려하십시오. 평범한 오래된 정적 데이터에 비해 몇 가지 장점이 있습니다. –
@ n.m.에 대해 더 자세히 말할 수 있습니까? – rrd