2017-04-18 74 views
0

我正在做一个使用QtCreator和C++的GUI界面。 我还使用ROS节点根据我的接口进行操作,为此我需要创建一些全局变量,以便在gui中调用回调时进行更改。GUI Qt全局变量错误

我开始通过创建一个名为globals.h一个头文件就像我在一些后看到并写道:

globals.h

在mainwindow.cpp
#ifndef GLOBALS_H 
#define GLOBALS_H 

extern int numberM; 
extern int duty[16]; 
extern int place[16]; 

#endif // GLOBALS_H 

然后(即当我使用Qt创建一个图形用户界面并在其中编写回调时,会自动创建)我做了以下操作:

mainwindow.cpp

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include "globals.h" 

namespace 
{ 
int numberM; 
int duty; 
int place; 
} 

然而,当我尝试做一些如为NUMBER = 0它给了我下面的错误:

mainwindow.cpp:18: error: reference to 'numberM' is ambiguous numberM = 0;

我想我没有正确认识全局变量,在这种情况下是如何工作的。这有点令人困惑。我是否还需要在mainwindow.h文件中声明globals.h,或者我错过了什么/做错了什么?

在此先感谢!

回答

0

extern意味着您的变量将在没有初始化的情况下被定义。所以你的标题是正确的/你只需要初始化你的全局变量

P.S.也用于使您的代码只为您使用名称命名空间

namespace global { 
    int numberM; 
} 
int foo() { 
    global::numberM = 3; 
}