我需要从函数中访问全局变量。我的声明如下:
file: HeaderFile.hpp
namespace SomeNamespace {
static SomeClass *globalvariable;
}
我必须从另一个文件(CPPFILE.cpp
- in which I have #include HeaderFile.hpp
)访问此文件。我有一个局部变量:
SomeClass *localvariable
在函数中修改此localvariable后,我需要将其赋值给globalvariable。像这样:
SomeNamespace::globalvariable = localvariable;
虽然不起作用。无论我输入什么,我都会收到错误。要么没有定义该类型(VS报告它自动将其更改为int,但它的类不匹配),或者如果我在globalvariable之前编写该类,则会出现我正在尝试重新定义它的错误。
请注意,我对C ++和指针并不熟悉。
修改
SomeNamespace::globalvariable = localvariable
ERROR: missing type specifier - int assumed. Note: C++ does not support default-int
SomeClass * SomeNamespace::globalvariable = localvariable
ERROR: SomeClass * SomeNamespace::globalvariable redefinition
答案 0 :(得分:3)
如果是静态的,则无法在该文件外部访问它。你可能需要的是一个常规变量和一个extern声明。观察:
档案A:
namespace SomeNamespace {
SomeClass *globalvariable;
}
档案B:
namespace SomeNamespace {
extern SomeClass *globalvariable;
}
//...
SomeClass *localvariable;
//...
SomeNamespace::globalvariable = localvariable;
如果您是C ++的新手,请尽量不要使用指针。搜索智能指针和/或如何使用堆栈分配来完成这些任务。