只有结构体指针 不知道结构体内容的情况上怎么得到值
只有结构体指针 不知道结构体内容的情况下如何得到值
目前有的东西
结构体指针 (结构体的内容不知道)
char* 中存贮的结构体的名字
char* 中存贮的结构体的属性名字
属性的类型;
例如 struct temp{
char* name;
int num;};
我只知道 指向temp的指针,char *s = "name" ; ,类型 char*;
如何获取 name 的值?
------解决方案--------------------
------解决方案--------------------
使用void *和memcpy+table作的测试
仅供参考
目前有的东西
结构体指针 (结构体的内容不知道)
char* 中存贮的结构体的名字
char* 中存贮的结构体的属性名字
属性的类型;
例如 struct temp{
char* name;
int num;};
我只知道 指向temp的指针,char *s = "name" ; ,类型 char*;
如何获取 name 的值?
------解决方案--------------------
------解决方案--------------------
使用void *和memcpy+table作的测试
仅供参考
- C/C++ code
#include "stdio.h" #include "string.h" typedef struct { int nData; char chData; }Tstruct1; typedef struct { int nData; char chData; short wData; }Tstruct2; Tstruct1 tTestt1 = {100, '1'}; Tstruct2 tTestt2 = {200, '2', 20}; const char *Stable[]= { (const char *)(&tTestt1), (const char *)(&tTestt2), }; void GetStructT(int type, void *pvOutBuf, int dwLen) { char *lpstrBuf = NULL; lpstrBuf = (char *)(Stable[type]); memcpy(pvOutBuf, (char *)lpstrBuf, dwLen); } void SetStructT(int type, void *pvOutBuf, int dwLen) { char *lpstrBuf = NULL; lpstrBuf = (char *)(Stable[type]); memcpy(lpstrBuf, pvOutBuf, dwLen); } int main(void) { Tstruct1 at1 = {0}; Tstruct2 at2 = {0}; GetStructT(0, &at1, sizeof(Tstruct1)); printf("struct1: nData:%d, chData:%c\n", at1.nData, at1.chData); GetStructT(1, &at2, sizeof(Tstruct2)); printf("struct2: nData:%d, chData:%c, wData:%d\n", at2.nData, at2.chData, at2.wData); at2.nData = 700; at2.chData = '8'; at2.wData = 66; SetStructT(0, &at2, sizeof(at2)); printf("struct2: nData:%d, chData:%c, wData:%d\n", at2.nData, at2.chData, at2.wData); return 0; } 本文来自****博客,转载请标明出处:http://blog.****.net/jernymy/archive/2010/01/09/5165453.aspx
------解决方案--------------------
------解决方案--------------------
估计你想实现Java的那种reflection机制,通过类名获取类的方法名和返回值类型,类的属性名。
可以google一下 c++ reflection实现,有这种库和例子。
------解决方案--------------------
这个我看得自己设计一个结构,统一第一个是该结构体的大小,然后把结构体读入内存,里面的数据可以设计成一个个的struct,第一个成员是类型(用枚举),第二个成员是数据名,第三个就是类型的数据:
大意结构(不是代码):
- C/C++ code
struct Test { strcut { type t = integrate char *name = "usa"; int usa = 300; }; ………… };
------解决方案--------------------