C++ 多次引用重复定义问题
- 写Qt的时候遇到的环境变量引用的问题,当需要初始化一个变量并在另一个 Class 内使用时,在 Class 类中引用这个头文件,会出现重复定义的问题。
解决的方法:
创建两个头文件 gl_extern.h 和 gl_para.h
在 gl_extern.h 中声明的函数和变量可以在本模块活其他模块中使用
// gl_extern.h #ifndef GL_EXTERN_H #define GL_EXTERN_H #include <QString> #include <QStringList> extern QStringList m_port_list; #endif // GL_EXTERN_H在 gl_para.h 中定义这个全局变量
// gl_para.h #ifndef GL_PARA_H #define GL_PARA_H #include <QString> #include <QStringList> QStringList m_port_list; #endif // GL_PARA_H
之后在需要使用的地方包含这两个头文件
单例设计模式
创建一个环境变量的类 #ifndef ENVIRONMENT_H #define ENVIRONMENT_H #include <QStringList>
class environment
{
environment();
public:
static environment * fun_get_entity()
{
static environment m_p_env ;
return &m_p_env ;
}
public:
QStringList m_list ;
};
#endif // ENVIRONMENT_H
在需要使用的地方
environment * m_p_env = environment::fun_get_entity() ;
在需要用到的类里
// 常量区创建指针
environment * m_p_env ;
// 构造函数中调用
m_p_env = environment::fun_get_entity() ;
// 使用的地方
m_p_env->fun_get_idx_of_enum( index );