我试图从一个指针返回一个int,但不断收到错误消息“从指针投射到不同大小的整数”。代码部分在下面。我认为问题可能是var_num调用的函数全部无效,但理想情况下,如果我不更改所有函数(及其后续函数)就可以离开,这将容易得多。谢谢!
int var_num(Prog *ptr)
{
if(!isdigit(ptr->words[ptr->current_line][0])) {
ptr->current_var = ptr->vars[var_instruction(ptr)];
}
else {
num_instruction(ptr);
}
return (int)ptr;
}
答案 0 :(得分:0)
我假设Prog
是某种struct
或class
。在任何一种情况下,它都是比简单变量复杂得多的对象,将其转换为其他类型并不是直接的。至少编译器本身不能做到,因为它模棱两可。
问题是,例如,编译器可以将强制转换float
转换为int
,但是如果不明确定义如何将class Student
转换为class Car
,将无法完成。可行。
如果Prog
包含您要返回的某种属性(在下面的示例中将称为attribute
),这就是您需要做的:
return ptr->attribute;
如果该属性的类型不同于int
,但类型为primitive,则可以像这样键入它。
return (int)ptr->attribute;