Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Нарушитель
68 / 26 / 24
Регистрация: 23.10.2015
Сообщений: 26
1

Как задать размер массива, который является членом класса, через конструктор?

09.11.2016, 09:57. Показов 1912. Ответов 2

Почему так? И как же тогда задать размер этого массива?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Test {
public:
    Test(int size) : arrSize(size){};
private:
    int arrSize;
    char array[arrSize];
};
 
int main()
{
    Test d(34);
    return 0;
}
Код
source_file.cpp:5:9: error: invalid use of non-static data member ‘Test::arrSize’
     int arrSize;
         ^
source_file.cpp:6:16: error: from this location
     char array[arrSize];
                ^
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2016, 09:57
Ответы с готовыми решениями:

Получить константу из экземпляра класса, который является членом другого класса
class test { const STATUS = 1; } $a = new test(); echo $a::STATUS . PHP_EOL; // работает ...

Считать строку в массив символов, который является членом класса
гетлайны, гетси, манипуляторы ws не работают (не могу заставить) #include <iostream> using...

Как задать размер массива через переменную?
Каким образом можно создать массив объектов, если его размер можно определить только по ходу...

Как слова с входного потока помещать в вектор, который является членом структуры?
Не могу понять, как слова с входного потока помещать в вектор, который является членом структуры....

2
Любитель чаепитий
3587 / 1687 / 519
Регистрация: 24.08.2014
Сообщений: 5,707
Записей в блоге: 1
09.11.2016, 10:03 2
Цитата Сообщение от Atakai Посмотреть сообщение
И как же тогда задать размер этого массива?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template< unsigned arrSize >
class Test {
public:
    Test() {};
private:
    char array[arrSize];
};
 
int main()
{
    Test<34> d;
    return 0;
}
Цитата Сообщение от Atakai Посмотреть сообщение
Почему так?
Потому что array - массив, а размер массива в С++ задается на этапе компиляции.
1
Don't worry, be happy
17172 / 10055 / 1935
Регистрация: 27.09.2012
Сообщений: 25,051
Записей в блоге: 1
09.11.2016, 10:04 3
Atakai, никак.
Размер массива должен быть
задан на этапе компиляции.
Можете использовать
динамическое выделение памяти,
или, например, std::vector.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2016, 10:04

Задать размер динамического массива через переменную, обявленную как extern
Привет народ, скажите, почему не компилирует: #include&quot;stdafx.h&quot; #include&quot;iostream&quot; using...

Как вызвать событие объекта TListBox, когда его экземпляр является членом моего класса
Всем привет! Есть мной писанный класс, который ведет лог. Класс примерно такого вида: class...

Конструктор класса, конструктор копирования запускается не тот который нужен
Есть такой конструктор: Neuron::Neuron(int iType_activation_funk) { this-&gt;iType_act =...

Указатель является переменной-членом класса
#include &lt;iostream&gt; class SimpleCat { public: SimpleCat(); ~SimpleCat(); int GetAge()...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.