0

以下のスニペットのようなことをしたい:

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;
}

ただし、これは機能しません。エラーが発生します: 非クラス型 'str '*の 'str1' のメンバー 'integs' の要求

これは構造体では不可能で、クラスが必要ですか? -> 演算子を何らかの方法で使用する必要がありますか? 考え?

4

2 に答える 2

1

あなたはstr1ポインタへの参照として取っています。あなたはおそらく次のことを意味していました:

void allocator(str& str1) {str1.integs=new int[2];}
void destructor(str& str1) {delete [] str1.integs;}
于 2013-01-11T13:21:51.523 に答える
1

str1 はポインターへの参照です。使用する必要があります

str1->integs

または、参照として使用してください。

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

そして、それはうまくいくはずです

于 2013-01-11T13:23:16.417 に答える