Я пишу класс, который я не хочу создавать. Все его члены статичны. Этот класс представляет собой периферию микроконтроллера. Поскольку в микроконтроллере только один экземпляр этого периферийного устройства не имеет смысла, я создаю экземпляры этого класса. Класс группирует только данные и функции этого периферийного устройства.Как определить размер массива, который является статическим членом не подкрепляемого класса?
Одним из членов данных класса является массив, размер которого пользователь класса должен определять во время компиляции. Если бы я мог создавать объекты этого класса, я знаю, что могу инициализировать consts в списке инициализаторов конструктора, но я действительно не хочу создавать экземпляры этого класса. Возможно, я мог бы использовать шаблоны и задать размер массива в качестве параметра шаблона, но мне нужно будет использовать что-то вроде 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() { /* .... */ }
};
Если размер устанавливается во время компиляции то, что является 'статической силы ARRAY_SIZE (интермедиат размер) {_size = размер; } 'должен делать? – wally
Рассмотрим одноэлементный класс. Он имеет некоторые преимущества перед старыми статическими данными. –
@ n.m., Можете ли вы сказать больше о? – rrd