Я хочу сделать что-то вроде фрагмента ниже:
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, и мне нужен класс? Нужно ли как-то использовать оператор ->? Мысли?
Вы принимаете str1
как ссылка на указатель. Вы, вероятно, имели в виду:
void allocator(str& str1) {str1.integs=new int[2];}
void destructor(str& str1) {delete [] str1.integs;}
str1 является ссылкой на указатель, вы должны использовать
str1->integs
Или используйте это как ссылку:
void allocator(str& str1) {str1.integs=new int[2];}
void destructor(str& str1) {delete [] str1.integs;}
И это должно быть хорошо