宣言
void init_capabilities(Capabilities ***capabilities)
として
void init_capabilities(Capabilities **capabilities)
そして
init_capabilities(result.capabilities);
You just need to pとしてs the pointer to your array structure, not a pointer to the pointer of your array structure.
Edit: And として others have pointed out, if you're going to use C++ you should really be using new
として in:
result.capabilities = new (Capabilities *)[6];
for(int i=0;i<6;i++) {
result.capabilities[i] = new Capabilities[8];
}
init_capabilities(result.capabilities);
...
void init_capabilities(Capabilities **capabilities) {
for(int i=0;i<6;i++) {
for(int j=0;j<8;j++) {
capabilities[i][j].room_capabilities = new RoomCapability[rooms_count];
}
}
}
And don't forget to use delete[]
. Better yet, do として Rob suggests and use the pre-defined C++ containers to handle this sort of thing. But if you really want to use unsafe pointers, what I have above should get it done for you.