访问全局静态变量

时间:2015-12-25 20:24:04

标签: c++

我需要从函数中访问全局变量。我的声明如下:

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

1 个答案:

答案 0 :(得分:3)

如果是静态的,则无法在该文件外部访问它。你可能需要的是一个常规变量和一个extern声明。观察:

档案A:

namespace SomeNamespace {               
    SomeClass *globalvariable;
}

档案B:

namespace SomeNamespace {               
    extern SomeClass *globalvariable;
}

//...

SomeClass *localvariable;

//...

SomeNamespace::globalvariable = localvariable;

如果您是C ++的新手,请尽量不要使用指针。搜索智能指针和/或如何使用堆栈分配来完成这些任务。