Russian Qt Forum

Программирование => С/C++ => Тема начата: qtkoder777 от Октябрь 15, 2018, 10:39



Название: Массив - член класса с размером - членом класса
Отправлено: qtkoder777 от Октябрь 15, 2018, 10:39
Можно ли что-то такое сделать?
Код
C++ (Qt)
class A
{
    const int dsize;
    double d[dsize];
    A():dsize(3)
   {
   }
};
Никак не могу собрать без ошибок. Делать указателем или контейнером не хочу.


Название: Re: Массив - член класса с размером - членом класса
Отправлено: ViTech от Октябрь 15, 2018, 11:02
Код
C++ (Qt)
class A
{
    static const int dsize = 3;
    double d[dsize];
    A()
   {
   }
};
 


Название: Re: Массив - член класса с размером - членом класса
Отправлено: Авварон от Октябрь 15, 2018, 22:30
Только через шаблоны, размер типа должен быть фиксирован


Название: Re: Массив - член класса с размером - членом класса
Отправлено: lit-uriy от Октябрь 16, 2018, 07:42
Можно объявить не массив, а указатель, а массив создавать динамически. При создании массива инициализировать им указатель.


Название: Re: Массив - член класса с размером - членом класса
Отправлено: RedDog от Октябрь 16, 2018, 13:24
А если в конструктор случайно передадут max int, да на стеке?


Название: Re: Массив - член класса с размером - членом класса
Отправлено: Igors от Октябрь 16, 2018, 15:11
Только через шаблоны, размер типа должен быть фиксирован
Тогда лучше и тип данных в шаблон
Код:
template <class Type, size_t N>
class A
{
..
     Type d[N];
...
};
Ну и потом typedef'чиком
Код:
typedef A<double, 4> Quad; 
typedef A<double, 3> Triangle;


Название: Re: Массив - член класса с размером - членом класса
Отправлено: Old от Октябрь 16, 2018, 15:16
Ух ты. Родили кастрированный array. :)

Код
C++ (Qt)
using Quad = std::array<double, 4>;
using Triangle = std::array<double, 3>;