【问题标题】:Unable to access static const variable declared outside the class无法访问在类外声明的静态 const 变量
【发布时间】:2017-08-31 19:54:47
【问题描述】:

我在 ConfigureManager.h 类声明之前声明了一个 static const 变量,如下所示:

static const std::string CONFIGURE_FILE_PATH = "./abc.conf";
class ConfigureManager: private boost::noncopyable
{
...
};

稍后当我尝试从 ConfigureManager.cpp 类方法访问它时,它给了我分段错误错误。

#include "ConfigureManager.h"
void ConfigureManager::xyz()
{   
    std::cout << "configureFilePath " << CONFIGURE_FILE_PATH << std::endl;
}

我在ubuntu环境下使用g++编译器。

【问题讨论】:

  • 问题出在代码的其他地方。
  • 在 main 之前的静态初始化期间是否调用了 xyz

标签: c++ variables static segmentation-fault constants


【解决方案1】:

不确定您使用的是什么版本的 g++,但是您是否有任何理由不在标头中将其定义为静态 const char*,然后在 cpp 中将其定义为“./abc.conf”?

如果它是 c++11,您也许可以使用初始化列表在标题中定义它——特别是。 static const std::string CONFIGURE_FILE_PATH = {"./abc.conf"};

【讨论】:

    【解决方案2】:

    插入、编译和运行您的代码没有任何问题。字符串被发送到控制台。发布错误消息或更多代码...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 2011-04-11
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多