说我有一堂课:
struct CAT
{
//In order to simplify the problem, supposing the possible
// types of member variables are just int,double or string
int a;
double b;
string c;
int d;
....
};
就我而言,我必须编写一个函数,以便可以使用其索引访问每个成员变量。
例如:
CAT cat;
setValue(cat,0,10);
setValue(cat,1,2.1);
setValue(cat,2,"hello");
setValue(cat,3,123);
//or
int i=1;
setValue(cat,i,2.1)
我想到的第一个想法是使用模板:
template<typename T>
void setValue(CAT &c, int idx, T value)
{
if (0 == idx){
c.a = value; //compile failure when using setValue(c,2,"hello")
} else if( 1 == idx){
c.b = value;
} else if( 2 == idx){
c.b = value; //compile failure when using setValue(c,0,10)
}
...
}
但由于代码中的注释,它不起作用。
有什么想法吗?
提前致谢。
修改的:
我需要编写一个程序将多个表及其记录转换为不同的c结构,例如:表CAT,它的架构是:
CAT(a,b,c,d,....)
转换成
struct S_CAT //this is generate automatically by code
{
int a;
double b;
string c;
int d;
...
};
//automatically generate some code to write all records of table CAT to struct S_CAT
生成自动创建 c 结构的代码很容易,但很难生成将记录放入其中的代码。