| 1 | #include <iostream> |
| 2 | #include <string> |
| 3 | |
| 4 | int *new_int(int val) { |
| 5 | return new int(val); |
| 6 | } |
| 7 | |
| 8 | struct baz |
| 9 | { |
| 10 | int h; |
| 11 | int k; |
| 12 | baz(int a, int b) : h(a), k(b) {} |
| 13 | }; |
| 14 | |
| 15 | struct bar |
| 16 | { |
| 17 | int i; |
| 18 | int* i_ptr; |
| 19 | baz b; |
| 20 | baz& b_ref; |
| 21 | bar(int x) : i(x),i_ptr(new int(x+1)),b(i+3,i+5),b_ref(b) {} |
| 22 | }; |
| 23 | |
| 24 | struct foo |
| 25 | { |
| 26 | int a; |
| 27 | int* a_ptr; |
| 28 | bar b; |
| 29 | |
| 30 | foo(int x) : a(x), |
| 31 | a_ptr(new_int(val: x+1)), |
| 32 | b(2*x) {} |
| 33 | |
| 34 | }; |
| 35 | |
| 36 | foo *new_foo(int x) { |
| 37 | return new foo(x); |
| 38 | } |
| 39 | |
| 40 | |
| 41 | int main(int argc, char** argv) |
| 42 | { |
| 43 | foo foo1(12); |
| 44 | foo foo2(121); |
| 45 | foo * newd_foo = new_foo(x: 1); |
| 46 | delete newd_foo; |
| 47 | foo2.a = 7777; // Stop here |
| 48 | *(foo2.b.i_ptr) = 8888; |
| 49 | foo2.b.b.h = 9999; |
| 50 | |
| 51 | *(foo1.a_ptr) = 9999; |
| 52 | foo1.b.i = 9999; |
| 53 | |
| 54 | int numbers[5] = {1,2,3,4,5}; |
| 55 | |
| 56 | return 0; // Done initializing |
| 57 | |
| 58 | } |
| 59 | |