Премини към съдържанието
Andrioy

Деклариране на масив в структура С++

Препоръчан отговор


Имам проблем при декларирането на масива и не знам как да го реша:

 

 

struct Students
{
char Name[30];
int Fnumber, YearEnter, Course, Group,Dis,Ag,La,Up;
char Speciality[];
 
 
};
fstream f; Students x; Students a[];  int n;
 
 
При декларирането на Students a[] ми изписва "type containing an unknown-sizq array is now allowed" как да се справя ? 
 
 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

 

Имам проблем при декларирането на масива и не знам как да го реша:

 

 

struct Students
{
char Name[30];
int Fnumber, YearEnter, Course, Group,Dis,Ag,La,Up;
char Speciality[];
 
 
};
fstream f; Students x; Students a[];  int n;
 
 
При декларирането на Students a[] ми изписва "type containing an unknown-sizq array is now allowed" как да се справя ? 

 

C++ не позволява да се декларират статични масиви с неопределен размер, освен като параметър на функция и то само за едно измерение.

Това се отнася както за полето Speciality[]; така и за Students a[]. Ако искаш да ползваш динамични масиви, трябва да ги замениш с указатели и да ползваш new[] или да използваш вектор/свързан списък.

Редактирано от flare (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

C++ не позволява да се декларират статични масиви с неопределен размер, освен като параметър на функция и то само за едно измерение.

Това се отнася както за полето Speciality[]; така и за Students a[]. Ако искаш да ползваш динамични масиви, трябва да ги замениш с указатели и да ползваш new[] или да използваш вектор/свързан списък.mo

Можеш ли да ми покажеш как, защото по късно ми трябва да го използвам като параметър на функция и ми дава същия проблем :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Можеш ли да ми покажеш как, защото по късно ми трябва да го използвам като параметър на функция и ми дава същия проблем :)

Първо трябва да ми кажеш каква е идеята, т.е. от какво зависи размера на тези масиви.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Първо трябва да ми кажеш каква е идеята, т.е. от какво зависи размера на тези масиви.

 
Трябва ми масив за записването на студентите със съответните полета, а след това и търсене по полета.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Трябва ми масив за записването на студентите със съответните полета, а след това и търсене по полета.

За име и специалност използвай тип string. Масив от char за низове е реликва от C, не е нужно да го ползваш в C++.За масива от студенти, ползвай оператора new[]/delete[]. Нещо такова:
Students *all;//след като "разбереш" колко ще са: (примерно в променлива num)all = new Students[num];//накрая, като свършиш работата си с масива го освобождаваш:delete[] all;
Това е ако държиш да е масив. По-добре би било да ползваш вектор или списък.За подаване на масива на функция, трябва да подадеш и променлива за размер.
//Примернa декларация:void DoSthWithStudents(Students all[], int num);
Ако ползваш вектор или списък, променлива за размер не е необходима, класовете им си имат итератори.
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.