Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 456

Вариативный размер массива в разных экземплярах класса

03.03.2026, 06:59. Показов 6094. Ответов 74
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста как задать размер статического массива в каждом экземпляре класса?
C++
1
2
3
4
5
class uart
{
 static const BUF_SIZE = 128;     
 uint8_t buf[BUF_SIZE];    
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2026, 06:59
Ответы с готовыми решениями:

Разное значение переменной класса, в разных экземплярах класса
Вот примерный код: class Test { private: static int countC; static int countD;...

О экземплярах класса
Приветствую. Есть класс Websocket .h/.cpp В websocket.cpp #include "websocket.h" ...

Найти элементы массива А, которые не повторяются и одновременно есть в массиве B в нескольких экземплярах
Всем привет, помогите пожалуйста довести код до ума, что бы выполнялось задание, которое описано в...

74
фрилансер
 Аватар для Алексей1153
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,292
03.03.2026, 18:43
Студворк — интернет-сервис помощи студентам
Наталья8, на картинке написана неправда. Писал неосилятор
1
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,118
Записей в блоге: 2
03.03.2026, 18:50
Цитата Сообщение от Korbofos Посмотреть сообщение
как задать размер статического массива в каждом экземпляре класса?
Никак, все экземпляры одного класса имеют один sizeof. Темплейт создает разные классы что часто неудобно
Цитата Сообщение от Korbofos Посмотреть сообщение
Да не очень получается, отдельно под каждый уарт свой класс. В принципе как сейчас и есть реализация. Динамическую память не хочется использовать в мк
Что за "мк" не знаю, но если надо без контейнеров/указателей, то можно так
C++
1
2
3
4
5
6
7
8
struct uart
{
 size_t bufSize;     
 size_t bufOffset;    
 static uint8_t * heap;
 ...
 unit8_t * data( void ) { return heap + bufOffset; }
};
Один блок (на всех) все-таки выделить придется
0
фрилансер
 Аватар для Алексей1153
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,292
03.03.2026, 19:59
Цитата Сообщение от Igor3D Посмотреть сообщение
Темплейт создает разные классы что часто неудобно
шаблон - это как раз наоборот - часто удобно

Добавлено через 2 минуты
Цитата Сообщение от Korbofos Посмотреть сообщение
Динамическую память не хочется использовать в мк
а что останавливает? Много таких объектов? Или часто пересоздаются ?
0
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 456
03.03.2026, 20:36  [ТС]
Direct Memory Access работает с этим массивом uint8_t buf[BUF_SIZE]. Нужны 2,3 экземпляра этого класса usart_1 usart_2 и т.д. Сейчас юзаю под каждый уарт свой класс со своим буфером. Экземпляр класса создаётся глобально
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
03.03.2026, 23:46
Так туда надо именно циферку вписать?
А на переменной эта конструкция не работает?
Не получаеться у меня творчество на этом извращении...


Константой я всё вокруг обзывал... Не прёт...
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
04.03.2026, 01:19
Цитата Сообщение от Алексей1153 Посмотреть сообщение
на картинке написана неправда
Когда нибудь я осилю... Если до этого не крякну...

Добавлено через 1 час 27 минут
Только так могу... Неоригинально совсем.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class uart
{
private:
    char*ptr;
public:
    // Конструктор
    uart(size_t n) {
        ptr = (char*)calloc(n,sizeof(char) );
    }
~uart() {
        free(ptr);
        ptr = NULL;
        }
    char *get_ptr() { return ptr; }
};
 
 
 
int main()
{
    system("chcp 1251");
    typedef unsigned char uchar;
    int lt = 208;
    const char *phrase = u8"Если вы думаете, что на что-то способны, вы правы; Hello World! если думаете,"
         "что у вас ничего не получится — вы тоже правы. Генри Форд";
    int count_rus{};
    for (int i = 0; i < strlen(phrase); ++i)
        if ((uchar)phrase[i] == lt || (uchar)phrase[i] == lt + 1)++count_rus;
    else if ((uchar)phrase[i] == 226)count_rus += 3;// Это трёхбайтовый знак
 
uart u1(strlen(phrase) - count_rus);
char *line_output = u1.get_ptr();
int num{};
for (int i = 0; i < strlen(phrase); ++i) {
 
    if ((uchar)phrase[i] == lt) { num = 48; continue; }
    else if ((uchar)phrase[i] == lt + 1) { num = 112; continue; }
    else if ((uchar)phrase[i] == 226) { ++i; ++i; num = 0; continue; }// Это трёхбайтовый знак
    
        char mov = phrase[i] + num;
    strncat(line_output, &mov, 1 );
num = 0;
}
 
std::cout << line_output;
    getchar();
}
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
04.03.2026, 01:23
0
фрилансер
 Аватар для Алексей1153
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,292
04.03.2026, 06:15
Цитата Сообщение от Наталья8 Посмотреть сообщение
Так туда надо именно циферку вписать?
constexpr выражение
например, литерал (циферка)

в твоём случае проще std::vector использовать
1
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
04.03.2026, 14:12
Серьёзно? Не люблю я вектора, стринги, сишные функции люблю.
Мне кажеться они более коректно работают.
Может просто кажеться...
000d60,
Вообще - решение должно быть простое... Чем проще тем лучше.
А класс я, только для вас навалял.. Он там на фик не нужен.
0
фрилансер
 Аватар для Алексей1153
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,292
04.03.2026, 14:55
Наталья8, тебе кажется
0
 Аватар для vlisp
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,426
04.03.2026, 15:01
Цитата Сообщение от Наталья8 Посмотреть сообщение
сишные функции люблю.
может ты просто отстал от жизни?
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
04.03.2026, 15:26
Наоборот, Я к ним недавно пристал. Бывало и на string писал.
Бывало и глюки, mandavoshki ловил...
Особенно на wstring..
Долго потом чешешь репу. От куда они взялись?
Работа string посложнее простого масcива си style.
Мало ли что в процессе может случиться.
Я как то явно вижу в голове процесс с_style...
На string как то не то...
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
04.03.2026, 15:27

Как то мудрёно всё.
Могу пользовать string, или vector..
Если явно экономит место. Кучу лишних строк писать не надо.
vector <string> например...
На c_style повторить проблематично.
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
04.03.2026, 15:39
Бывало и вот так например...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//------------------------------
    short ln_cout{}; // Открываем файл в фолдере экзешника и читаем, заполняем двумерный массив...
        std::string line;
    std::ifstream fin(cmd_line);
        if (fin.is_open())
            while (getline(fin, line))// =============== Читаем текст - editing_the_ =======
            {// 
                bool one{ true };
                char *cut_ptr = &line[0];
                while (*cut_ptr != '\0') {
                    if (*cut_ptr != ';')// Здесь раскидать по разделителям <;> в матрицу
                        strncat(collection[ln_cout], cut_ptr, 1);
                    else {
                        if (one != true) {
// Здесь и будет один айпишник, вставленный в строку матрицы
                    if (strncmp(collection[ln_cout], ln_active.c_str(), strlen(collection[ln_cout])) == 0) {
                            size_t pos = line.find(";");// Первое слово из строки текста из файла на раб. столе (Страна)
                                ln_active = line.substr(0, pos);
                                         }
                            size_t count{ strlen(collection[ln_cout]) };
                            char *mov = collection[ln_cout] + strlen(collection[ln_cout]) - 1;// Ты ноль переносил (-1 обязательно)
                    for (size_t i = count; i > 0; --i)
                        {
                                *(mov + 10) = *(mov); mov -= 1;
                        }// Переместить содержимое строки в право и вставить десять знаков (Кому щас легко)
                            memcpy(collection[ln_cout], "я_дерево   ", 10);
                        }
                        one = false;
                        ++ln_cout;
                        }
                    cut_ptr++;
                }
            }
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,542
Записей в блоге: 1
05.03.2026, 19:45
Алексей1153, так-то легко стать неосилятором, когда тебе в язык почти весь boost из прежних времён запихнули. Чтобы сказать "я знаю C++" в восьмидесятые, программисту Си надо было выучить наследование, полиморфизм и инкапсуляцию классов - три фичи, четыре, wiki говорит - ещё аргумент по умолчанию.
Чтобы сказать "я знаю C++" сегодня, надо хотя бы весь STL вызубрить для начала. Причём пока все предметные области не осилишь, которые даже на практике в одном проекте не попадаются - не говоришь, что выучил плюсы.
0
фрилансер
 Аватар для Алексей1153
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,292
05.03.2026, 19:50
Kuzia domovenok, никто не заставляет всё зубрить и всё использовать. Для начала конструктор и деструктор освоить - это уже хорошо
0
Заблокирован
05.03.2026, 20:18
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Чтобы сказать "я знаю C++" в восьмидесятые, программисту Си надо было выучить наследование, полиморфизм и инкапсуляцию классов - три фичи, четыре, wiki говорит - ещё аргумент по умолчанию.
Не знаю что там в 80-ых. И можно ли то назвать С++.
Но даже если взять с++98/03 то никто не отменял: области видимости, время жизни объектов и ещё много базовых аспектов.
Шаблоны так же уже начинали своё развитие.
p.s. Да и вообще, можно взять стандарт(а то что до него и С++ назвать нельзя) и посмотреть количество страниц.


Да и вообще, к чему это? Да, раньше, как говорят учёные, хомо с палкой и голой жопой бегали.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
06.03.2026, 13:29
.
Чтобы сказать "я знаю C++" сегодня, надо хотя бы весь STL вызубрить для начала. Причём пока все предметные области не осилишь, которые даже на практике в одном проекте не попадаются - не говоришь, что выучил плюсы.
C++ если честно не является единым монолитным языком с поддержкой обратной совместимости. По сути есть подмножество различных языков разных версий. Не даром в компиляторах можно указывать версию. Это потому что обратная совместимость давно нарушена. То есть вопрос "я знаю c++" бессмысленен. Надо уточнять какой стандарт знаешь. Это безумие.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,542
Записей в блоге: 1
06.03.2026, 16:12
000d60, шаблоны появились не в первой версии С++ а ближе к 1990 году, Стандарт вообще в 98 появился.
Я про то творение, что сделал лично Страуструп и впервые назвал новым языком.
CoderHuligan, я больше про то, что сложно быть специалистом C++ по сети и многопоточности и одновременно по CUDA вычислениям и графике, разбираться в легаси коде и одновременно последнем стандарте.
0
Заблокирован
06.03.2026, 19:22
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
я больше про то, что сложно быть специалистом C++ по сети и многопоточности и одновременно по CUDA вычислениям и графике, разбираться в легаси коде и одновременно последнем стандарте.
Это же естественно.
Как по другому? Другие ЯП за месяц - "и швец, и жнец, и на дуде игрец"?
Если да, то открой мне этот чудо ЯП.

Никто и не спорит, что С++ сложнее и многообразнее, вероятно, всех ЯП.
Но вот претензии и/или жалобы не понятны.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.03.2026, 19:22

Найти элементы, присутствующие в нескольких экземплярах либо только в массиве А, либо только в массиве B
Нужно найти элементы, присутствующие в нескольких экземплярах либо только в массиве А, либо только...

Вывести элементы, которые есть в массиве А в нескольких экземплярах и отсутствуют в массиве В
Задание : вывести на экран элементы, которые есть в массиве А в нескольких экземплярах и...

2-мерные массивы: Вызов конструктора портит данные в других экземплярах
Проблема: обнаружилось, что порой пропадают числа из существующих экземпляров класса. Числа...

Элементы, которые есть в нескольких экземплярах в Массиве А и отсутствуют в Массиве В
Задание : вывести на экран элементы, которые есть в массиве А в нескольких экземплярах и...

Найти элементы, которые есть в массиве А в нескольких экземплярах и отсутствуют в массиве В
Задание : вывести на экран элементы, которые есть в массиве А в нескольких экземплярах и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru