C++ 多次引用重复定义问题


C++ 多次引用重复定义问题

  • 写Qt的时候遇到的环境变量引用的问题,当需要初始化一个变量并在另一个 Class 内使用时,在 Class 类中引用这个头文件,会出现重复定义的问题。

解决的方法:

  • 创建两个头文件 gl_extern.hgl_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 );

文章作者: bySouffle
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 bySouffle !
  目录