C++;can';t在单独的函数中建立变量之间的通信 我正在用C++制作一个基于文本的RPG,我一次又一次地弹出同样的错误,我确信我做了一些根本错误的事情,但是我不知道什么。搜索找到了特定编译器错误的解决方案,但我无法使用任何东西来修复我正在编写的代码

C++;can';t在单独的函数中建立变量之间的通信 我正在用C++制作一个基于文本的RPG,我一次又一次地弹出同样的错误,我确信我做了一些根本错误的事情,但是我不知道什么。搜索找到了特定编译器错误的解决方案,但我无法使用任何东西来修复我正在编写的代码,c++,function,pointers,C++,Function,Pointers,我想回答的问题:如何使用指针来实现独立函数之间的变量通信?换句话说,如何使用指针指向变量的值,以便在未声明该值的函数中使用和操作该值 TL;DR版本:我试图让我的“exp”int变量使用指针与外部函数通信。我得到了错误:“ISO C++禁止指针和整数[FPrime]”的比较< < 长版本:下面是一些我遇到问题的代码: 在charlvl.cpp文件中: ... int lvl = 1; int *exp = 0;//value I want communicated to main() int s

我想回答的问题:如何使用指针来实现独立函数之间的变量通信?换句话说,如何使用指针指向变量的值,以便在未声明该值的函数中使用和操作该值

TL;DR版本:我试图让我的“exp”int变量使用指针与外部函数通信。我得到了错误:“ISO C++禁止指针和整数[FPrime]”的比较< < 长版本:下面是一些我遇到问题的代码:

在charlvl.cpp文件中:

...
int lvl = 1;
int *exp = 0;//value I want communicated to main()
int str = 0;
int vit = 0;
...
在文件fight.cpp(main.cpp)中:

。。。
//你刚刚杀了一个怪物

您可能把
&
*
运算符弄糊涂了
*
int*
转换为
int
,而
&
int*
转换为
int**

这就是你想要的:

(*exp) += expValue;

你可能想考虑使用引用。

如果你将EXP定义为全局指针,你不需要考虑通信的事情,你可以简单地在不同的函数中使用它,但是你使用它的方式是错误的。
&exp+=expValue

应该改成

*exp+=expValue

因为
*
意味着向我获取指针的内容

顺便说一句,尝试不将exp定义为指针也可以

int exp=0
exp+=expValue

这一切都基于
exp
是一个全局变量或全局指针

如果您已在如下函数中定义了它:

void func()
{
   int *expPtr = 0;
   int exp = 0
}
你想在另一个函数中使用它

void use()
{
   // trying to use expPtr or exp.

}
我知道的方式是:

1,使用本地变量并在
func()
中返回它,但请注意,返回的变量只是一个副本

int func()
{
   int exp = 0;
   exp++;
   return exp;
}
2、使用本地指针并为其分配内存,然后返回指针或将新内存分配给全局指针。但是要小心内存泄漏,一旦不使用它,就需要将其删除

int * func()
{
   int *expPtr = 0;
   expPtr = new int(2);
   return expPtr;
}

*exp+=expvalue
我想这是您要找的。变量是声明为全局变量还是函数中的局部变量?您是否为指针分配内存?如果变量是全局变量,为什么要使用指针,而只需在其他源文件中声明它
extern
?除了明显的语法错误,没有足够的信息来正确回答这个问题,请发布更完整的代码(请参阅以获取提示)。谢谢,我已经在名称空间中放置了exp和expValue以及一些其他问题变量,这就解决了所有问题。出于某种原因,我不喜欢声明全局变量,这就是为什么我使用指针的原因,也是为了我自己的教育。我将尝试改变符号,即使我在较小的程序中尝试过,并且即使使用正确的指针语法,我仍然会得到“变量未在此范围内声明”错误。嗯。。。我认为不使用全局变量是OOP的想法,我自己相信使用任何好的东西,而不仅仅是使用纯OOP。
int * func()
{
   int *expPtr = 0;
   expPtr = new int(2);
   return expPtr;
}