динамическое распределение памяти члена структуры в другой функции

Я хочу сделать что-то вроде фрагмента ниже:

using namespace std;

struct str {
int *integs;
};

void allocator(str*& str1) {str1.integs=new int[2];}
void destructor(str*& str1) {delete [] str1.integs;}

int main () {

str str1;
allocator(str1);
str1.integs[0]=4;
destructor(str1);
return 0;
}

Однако это не работает; я получил ошибка: запрос на член «integs» в «str1», который имеет неклассный тип «str»«*

Разве это невозможно сделать с помощью struct, и мне нужен класс? Нужно ли как-то использовать оператор ->? Мысли?

0

Решение

Вы принимаете str1 как ссылка на указатель. Вы, вероятно, имели в виду:

void allocator(str& str1) {str1.integs=new int[2];}
void destructor(str& str1) {delete [] str1.integs;}
1

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

str1 является ссылкой на указатель, вы должны использовать

str1->integs

Или используйте это как ссылку:

void allocator(str& str1) {str1.integs=new int[2];}
void destructor(str& str1) {delete [] str1.integs;}

И это должно быть хорошо

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector