Фон: Я застрял до arm-arago-linux-gnueabi-g++ (GCC) 4.3.3
. Хотя ответы, требующие C++ 11 или более поздней версии, также приветствуются, явным образом выражаю любое языковое требование позже C++ 03.Как вычислить инициализацию массива const (make const look-up-tables)?
Конструктор объекта заполняет значения в таблицах, которые будут использоваться алгоритмом.
Поскольку эта таблица не изменяется и не должна изменяться, я хочу, чтобы они были const, как мне это сделать?
Сложность № 1, значения генерируются с вычислительной точки зрения, и я не хочу их жестко кодировать в исходном файле.
Сложность # 2, вычисление иногда зависит от входов, которые доступны только во время выполнения.
Сложность №3, я не знаю, почему, но я не хочу, чтобы массив был статическим, хотя значения могут быть одинаковыми для всех объектов (случаи, когда значения не зависят от ввода времени выполнения).
Сложность №4, это массив, поэтому список инициализаторов в C++ 03 не будет работать.
Edit1: Через несколько недель после того, как этот пост, я нашел как зЬй :: массив и станд :: вектор очень хорошая альтернатива массива C-типа, когда станд :: массив не доступен.
Wrap массив с классом, который гарантирует, что он инициализируется только один раз, и обеспечивает только константные методы получения. – BartoszKP
Наличие данных, обозначенных как «const», действительно не приносит вам никакой ценности. Вы можете изменить их в памяти, и только интерфейс возвращает ссылку на объекты const. – nothrow