【发布时间】:2018-03-19 13:32:26
【问题描述】:
struct token{ string type; string value;};
//Global variables:
int reg[10]={-1,...,-1};
int* R0 = reg;
... down in some func...
cout<< *(R0)<< endl;//OUTPUTs -1
int valInR0= *reinterpret_cast<int*>(&token.value) //contains string "R0"
问题是我有一个结构,它有一个名为 value 的字符串成员来存储不同的名称,当我尝试从字符串中取出一个 int 指针的名称时,我无法弄清楚如何让它引用回到 int 指针并取消引用它的值。
就像上面的例子一样,从我的结构中取出字符串 val "R0" 然后使用它来访问 int *RO 是我试图完成但没有成功的事情。
【问题讨论】:
-
你不能这样做,符号在运行时不可用。
-
对于这种事情你可能想使用std::map<std::string, int>。
-
int valInR0= *reinterpret_cast<int*>(&token.value)这毫无意义。不要使用强制转换和指针来隐藏编译器错误。您的回答int val = (token.value[1]-ASCII)也可能出错。也许您的意思是声明int value而不是string value。 -
@BarmakShemirani:谢谢。我正在从存储在我的结构的 token.value 成员中的字符串值 "R0","R1"..."R7" 集合中提取 int 值。
标签: c++ pointers casting dereference