C ++ инициализирует неизвестный размер 2DimArray в конструкторе

0

У меня проблема. Я хочу инициализировать мой 2Dim-массив, который является членом класса, в конструкторе класса. Например.

class Foo
{
    private:

       bool testArray[100][4];

    public:

       Foo( bool t_array[][4]);         
};

в файле Foo.cpp:

Foo::Foo(bool array[][4])
{
   // initilize it in there with unknown row size 
}

У меня нет определенного размера строки, но я знаю, что это будет максимум 100.

Как я мог инициализировать мой testArray в моем конструкторе? заранее спасибо.

Теги:
multidimensional-array
constructor

1 ответ

1

Поскольку ваш массив типа bool [100][4] будет распадаться на указатель типа bool (*) [4] при передаче конструктору, вы должны также передать количество строк. Нет другого способа, каким образом этот конструктор обнаружит реальный размер этого массива.

В качестве альтернативы вы можете вместо этого использовать std::vector< std::array<bool, 4> >.

  • 0
    Спасибо за ответ. Я не имею права менять типы функций. Есть ли способ выяснить это без изменения декларации?
  • 0
    @Bambi: Возможно, это было бы возможно, если бы вы использовали некоторую последовательность значений, чтобы отметить конец массива. Однако это не кажется разумным решением. Почему вы не можете изменить декларацию?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню