我想得到一个结构变量的迭代器,以根据枚举ID在运行时设置一个特定的变量.例如 -
struct {
char _char;
int _int;
char* pchar;
};
enum {
_CHAR, //0
_INT, //1
PCHAR //2
};
int main()
{
int i = 1; //_INT
//if i = 1 then set variable _int of struct to some value.
}
Run Code Online (Sandbox Code Playgroud)
如果没有if/else或switch case语句,你能做到吗?
不,C++不直接支持这一点.
但是你可以使用boost :: tuple做一些非常相似的事情:
enum {
CHAR, //0
INT, //1
DBL //2
};
tuple<char, int, double> t('b', 1, 3.14);
int i = get<INT>(t); // or t.get<INT>()
Run Code Online (Sandbox Code Playgroud)
您可能还想看看boost :: variant.