C++ 如何将指针转换为int?
我试图从指针返回一个int,但不断收到错误消息“从指针转换为不同大小的整数”。代码部分如下。我认为问题可能在于var_num调用的函数都是无效的,但理想情况下,如果我不改变所有函数(以及它们的后续函数),那么就容易多了。谢谢C++ 如何将指针转换为int?,c++,c,turtle-graphics,C++,C,Turtle Graphics,我试图从指针返回一个int,但不断收到错误消息“从指针转换为不同大小的整数”。代码部分如下。我认为问题可能在于var_num调用的函数都是无效的,但理想情况下,如果我不改变所有函数(以及它们的后续函数),那么就容易多了。谢谢 int var_num(Prog *ptr) { if(!isdigit(ptr->words[ptr->current_line][0])) { ptr->current_var = ptr->vars[var_instructi
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
或类。在这两种情况下,它都是一个比简单变量复杂得多的对象,将其转换为不同的类型并不是直接的。至少编译器不能自己完成,因为它是不明确的
问题是,例如,编译器可以将castfloat
键入int
,但如果不明确定义其工作方式,就无法将class Student
转换为class Car
如果Prog
包含要返回的某种属性(在下面的示例中我将调用attribute
),则需要执行以下操作:
返回ptr->属性;
如果该属性的类型不同于int
,但它是一个类型,那么可以像这样进行类型转换
return(int)ptr->attribute;
如果您确实希望我给您一个精确的解决方案(非基于属性),那么分享Prog
类型is(就像它的定义一样)可能是值得的。问题不是将Prog
对象转换为int
;它是关于把一个Prog*
(指针)转换成int
@PeteBecker,我不确定。他的函数名为var\u num
而不是var\u address
。但是你是对的,这个问题也可能是这个意思。@ItayGrudev谢谢!我的问题是关于Prog*到int,但我相信我现在已经解决了。非常感谢:)如果您只想让函数返回一个Prog指针,为什么要将其声明为int?来自var_指令()
的返回值被用作数组索引,因此它不能返回void
-因此,与您的描述相反,所有调用的函数都不会返回void
。无论如何,您还没有指定调用方将如何处理返回的int
——这将影响将指针转换为int
的意义(如果有)。如果调用方出于某种原因试图将返回的int
转换回指针,那么它可能会失败-指针不能保证在往返过程中(指向int
的指针和返回指针)保持不变。@CDummy您能包括客户端代码吗?发布一个。现在排序,谢谢大家!!