I have the following piece of code in which I am trying to store a child struct childStruct
in std::map with the data part being the parent struct parentStruct
. However, when I try to retrieve again the data part for the child which is variable2
, I get a wrong value.
Here is the code:
// Example program
#include <iostream>
#include <string>
#include <map>
struct parentStruct
{
uint32_t variable1;
};
struct childStruct : parentStruct
{
uint32_t variable2;
};
int main()
{
struct childStruct test;
std::map<uint32_t, struct parentStruct> m_list;
test.variable1 = 50;
test.variable2 = 100;
m_list[1] = test;
struct childStruct *test2 = static_cast<struct childStruct *> (&m_list.at(1));
std::cout << test2->variable1 << std::endl;
std::cout << test2->variable2 << std::endl;
}
The output of the previous program is:
50
138353
Instead of being:
50
100
How can I can the correct value which is stored in variable2
.