Объявление частного массива, доступного по указателю в классе и выделение памяти

Мне нужна помощь с объявлением указателя в классе. Я ищу способ использовать массив в стиле c (так что, к сожалению, нет векторов), хотя я использую c ++. Мне не удается избежать ошибок при выполнении, таких как «ошибка сегментации: 11» или «ошибка шины: 10». Цель состоит в том, чтобы иметь способ содержать 10 ссылок на людей в классе.

Эти указатели объявлены в файле .h следующим образом:

private:
string * name;
string * surname;
int * index1;
int * index2;

и в ctor-файле .cc я использовал разные способы выделения памяти, такие как:

string * name = new string[10];
string * surname = new string[10];
int * index1 = new int[10];
int * index2 = new int[10];

но я получил ошибки времени выполнения, возможно, потому, что он на самом деле не имеет доступа к закрытым переменным или превышает объем памяти («ошибка сегментации»).
Если я не напишу строки выше, вывод «ошибка шины» при выполнении.
Я не получаю ошибки при компиляции, только во время выполнения.
Я не могу изменить типы закрытых переменных в файле .h, и это не позволяет мне использовать new в классе, так как это будет расширение C ++ 11.

Любая помощь будет очень ценится

0

Решение

Я думаю, что вы должны использовать std :: vector, так как у новичков очень мало причин использовать new / delete.

В вашем случае приватный раздел может измениться на:

private:
std::vector<string> name;
std::vector<string> surname;
std::vector<int> index1;
std::vector<int> index2;

и в конструкторе, может иметь это:

name.resize(10);
surname.resize(10);
index1.resize(10);
index2.resize(10);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]