Пример кода ниже показывает, что я пытаюсь сделать:
template<int NX, int NY>
class Array
{
public:
float v[NX][NY];
};
void main()
{
Array<10,20> grid;
}
Приведенный выше код не будет компилироваться, но он показывает, что я хочу сделать. У нас есть класс, который содержит массив, и класс массива не знает его размера до момента компиляции. Есть ли простой способ сделать это?
Редактировать: я хочу написать простой класс многоразового использования. Это означает, что мне нужно найти хороший способ отделить размер массива от класса.
Я также хочу, чтобы класс был быстрым (и простым), поэтому он не должен выделяться динамически. Это означает, что размер не может быть задан во время выполнения.
Я также не хочу использовать препроцессор для определения размера, потому что это означает, что мне придется пройти через стычку изменения числа где-то. Это недостаточно удобно.
По сути, класс не знает свой собственный размер до момента компиляции, потому что именно тогда основная функция сообщает классу его размер.
Редактировать: вышеуказанный код хорош.