Russian Qt Forum
Ноябрь 22, 2024, 11:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Массив - член класса с размером - членом класса  (Прочитано 4682 раз)
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« : Октябрь 15, 2018, 10:39 »

Можно ли что-то такое сделать?
Код
C++ (Qt)
class A
{
    const int dsize;
    double d[dsize];
    A():dsize(3)
   {
   }
};
Никак не могу собрать без ошибок. Делать указателем или контейнером не хочу.
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #1 : Октябрь 15, 2018, 11:02 »

Код
C++ (Qt)
class A
{
    static const int dsize = 3;
    double d[dsize];
    A()
   {
   }
};
 
Записан

Пока сам не сделаешь...
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Октябрь 15, 2018, 22:30 »

Только через шаблоны, размер типа должен быть фиксирован
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Октябрь 16, 2018, 07:42 »

Можно объявить не массив, а указатель, а массив создавать динамически. При создании массива инициализировать им указатель.
Записан

Юра.
RedDog
Частый гость
***
Offline Offline

Сообщений: 221


Просмотр профиля
« Ответ #4 : Октябрь 16, 2018, 13:24 »

А если в конструктор случайно передадут max int, да на стеке?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Октябрь 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;
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #6 : Октябрь 16, 2018, 15:16 »

Ух ты. Родили кастрированный array. Улыбающийся

Код
C++ (Qt)
using Quad = std::array<double, 4>;
using Triangle = std::array<double, 3>;
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.103 секунд. Запросов: 23.