C++ 如何将指针转换为int?

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调用的函数都是无效的,但理想情况下,如果我不改变所有函数(以及它们的后续函数),那么就容易多了。谢谢

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
类。在这两种情况下,它都是一个比简单变量复杂得多的对象,将其转换为不同的类型并不是直接的。至少编译器不能自己完成,因为它是不明确的

问题是,例如,编译器可以将cast
float
键入
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您能包括客户端代码吗?发布一个。现在排序,谢谢大家!!