Имется структура:
struct _nvr
{
char ip_nvr[50];
char log[50];
char passwd[50];
char ip_cam[20][50];
char id_cam[16][10];
LONG lUserID;
NET_DVR_DEVICEINFO_V30 struDeviceInfo; //the info get when login
NET_DVR_WORKSTATE_V40 *pStruWorkStateV40;
NET_DVR_GETWORKSTATE_COND struWorkStateCond;
DWORD dwList;
int flag;
};
_nvr nvr[30] = {};
*pStruWorkStateV40
? Можно ли ее проинициализировать в структуре:
NET_DVR_WORKSTATE_V40 *pStruWorkStateV40 = new NET_DVR_WORKSTATE_V40;
Если к самому значению - то
*nvr[i].pStruWorkStateV40
Если к какому-то полю NET_DVR_WORKSTATE_V40
- то
nvr[i].pStruWorkStateV40->field_name
К указателям в структурах обращаются так же как и к любым другим членам данных:
имя_экземпляра.имя_поля_данных
Это базовая информация, которая даётся в самом начале любого учебника/курса по языку. Без таких знаний просто невозможно создать что-то минимально осмысленное.
Можно ли ее проинициализировать в структуре?
Инициализация нестатического члена в момент определения структуры возможна в c++, начиная с c++11:
struct S {
T* var = new T();
};
В c и более ранних c++ стандартах такая инициализация невозможна. Требуется создавать конструктор (с++) или делать это в некоторой функции инициализации (с).
У вас объявлен массив структур
_nvr nvr[30] = {};
Чтобы обратиться к члену данных какого-либо элемента этого массива, вы должны выбрать элемент массива с помощью оператора индексирования. Например,
nvr[i]
где i - это некоторое значение индекса в диапазоне [0, 30)
, и применить оператор обращения к члену данных класса .
. Например,
nvr[i].pStruWorkStateV40
Теперь вы этому члену данных можете присвоить некоторое значение. Например,
nvr[i].pStruWorkStateV40 = new NET_DVR_WORKSTATE_V40;
В этом случае член данных, представляющий из себя указатель и заданный выражением nvr[i].pStruWorkStateV40
, будет указывать на выделенный памяти объект.
Чтобы присвоить некоторое значение этому объекту, вы должны разыменовать этот указатель, используя оператор разыменования *
. Например,
*nvr[i].pStruWorkStateV40 = SomeValue;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте! Я написал свой класс-контейнерИ теперь мне нужно написать класс iterator, чтобы мой контейнер смог взаимодействовать с алгоритмами...