我想给指针数组赋值 要怎麽改正

#include
using namespace std;
class a
{
public:
int i;
void set(int x)
{
i = x;
}
};
class b
{
public:
a* p[3];
};
int main()
{
b x;
x.p[0]->set(1);
cout << x.p[0]->i;
}

b x;
for (int i = 0; i < 3; i++)
x.p[i] = new a();
x.p[0]->set(1);
cout << x.p[0]->i;

问题解决的话,请点下采纳