如何从指针转换为 int?
How do I cast from a pointer to an int?
我正在尝试从指针 return 一个 int,但一直收到错误消息 'cast from pointer to integer of different size'。代码部分如下。我认为问题可能是 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;
}
我假设 Prog
是某种 struct
或 class
。在任何一种情况下,它都是一个比简单变量复杂得多的对象,并且将其转换为不同的类型并不是直截了当的。至少编译器自己做不到,因为它有歧义。
问题是,编译器可以将 float
类型转换为 int
,但是如果您不明确地将 class Student
转换为 class Car
则无法完成定义它是如何工作的。
如果 Prog
包含您想要 return 的某种属性(在下面的示例中我将其称为 attribute
),这就是您需要做的:
return ptr->attribute;
如果该属性的类型与 int
不同,但属于 primitive 类型,则您可以像这样进行类型转换。
return (int)ptr->attribute;
我正在尝试从指针 return 一个 int,但一直收到错误消息 'cast from pointer to integer of different size'。代码部分如下。我认为问题可能是 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;
}
我假设 Prog
是某种 struct
或 class
。在任何一种情况下,它都是一个比简单变量复杂得多的对象,并且将其转换为不同的类型并不是直截了当的。至少编译器自己做不到,因为它有歧义。
问题是,编译器可以将 float
类型转换为 int
,但是如果您不明确地将 class Student
转换为 class Car
则无法完成定义它是如何工作的。
如果 Prog
包含您想要 return 的某种属性(在下面的示例中我将其称为 attribute
),这就是您需要做的:
return ptr->attribute;
如果该属性的类型与 int
不同,但属于 primitive 类型,则您可以像这样进行类型转换。
return (int)ptr->attribute;