[C++] инициализация массива переменных размеров внутри класса


Answers

Если вы знаете только размер во время выполнения, ответ Джейсона C - это то, что вы хотите. (С комментарием juanchopanzas)

Если размер известен во время компиляции, вы можете использовать шаблоны:

template < int SIZE >
class runningAverage
{
    float array [ SIZE ];
};

runningAverage < 10 > ra;

Или используйте классы, такие как std::array вместо std::vector .

Question

Я пытаюсь инициализировать массив размера n, основанный на входном аргументе моего конструктора. Это работает:

//Inside Header
class runningAverage{
    private:
        byte n;
        float array[10];
    public:
        runningAverage(byte);
};

//Inside .cpp
runningAverage::runningAverage(byte a){
    n = a;
    for (byte i = 0; i<n; i++) {
        array[i] = 0;
    }
}

и это не работает:

//Inside Header
class runningAverage{
    private:
        byte n;
        float array[];
    public:
        runningAverage(byte);
};

//Inside .cpp
runningAverage::runningAverage(byte a){
    n = a;
    for (byte i = 0; i<n; i++) {
        array[i] = 0;
    }
}

Я хочу инициализировать массив так, чтобы это был размер, указанный n. Таким образом, я не теряю память, произвольно определяя массив float [256] или что-то в этом роде. Любая помощь приветствуется!