【工作笔记】结构体值获取失败

示例代码:

#include 
#include 
typedef struct TEST_STRUCT
{
	int age;
	int number;
}TEST, *PTEST;

std::map gMapTestPointer;
std::map gMapTest;

void makeDataPointer()
{
	//this is wrong
	TEST t;
	t.age = 20;
	t.number = 10;
	gMapTestPointer[1] = &t;

	//this is ok
	/*PTEST t = new TEST;
	t->age = 20;
	t->number = 10;
	gMapTestPointer[1] = t;*/
}

PTEST getDataPointer(int id)
{
	PTEST pt;
	std::map::iterator iter = gMapTestPointer.find(id);
	if(iter != gMapTestPointer.end())
	{
		pt = iter->second;
	}
	else
	{
		pt = NULL;
	}

	return pt;
}

void makeData()
{
	TEST t;
	t.age = 20;
	t.number = 10;
	gMapTest[1] = t;
}

TEST getData(int id)
{
	TEST pt;
	std::map::iterator iter = gMapTest.find(id);
	if(iter != gMapTest.end())
	{
		pt = iter->second;
	}

	return pt;
}

int main()
{
	makeDataPointer();
	PTEST p = getDataPointer(1);

	makeData();
	TEST t = getData(1);
	system("pause");
	return 0;
}

 

总结:

1、定义的时候如果是指针 map,赋值时需要new一下,如果使用 TEST 栈变量就不行

2、简单的话,定义和赋值统一使用 TEST 即可

你可能感兴趣的:(经验总结)