Type Punning, part 3
In last session, we read struct
as a array
, now we will extend on this with two struct implementation.
Here is what it would look like:
#include <iostream>
struct Vector1
{
int a, b;
};
struct Vector2
{
int a, b, c, d;
Vector1* getVector1() {
// Return address of first element as Vector1
return (Vector1*) &a;
}
};
void printVector1(Vector1& vec1) {
std::cout << vec1.a << ", " << vec1.b << std::endl;
}
int main(int argc, char const *argv[])
{
Vector2 v2 = {1,2,3,4};
Vector1* v1 = v2.getVector1();
printVector1(v1[0]);
printVector1(v1[1]);
return 0;
}
Try it here.
// Output
1, 2
3, 4
Let's see how it works:
We have 2 structs,
Vector1
andVector2
.Vector1
contains 2 integers andVector2
constains 4 integers.It can be said,
Vector2
can be read as twoVector1
objects.In the example above, we are doing the same thing. We create a object of
Vector2
that store 4 integer variables and then read them as twoVector1
objects (as an array).Thus, we successfully read a
Vector2
data as twoVector1
data.
Last updated