我在头文件中包含了一个静态c ++字符串数组。我得到了一个段错误 当我尝试在源文件中访问它时。
以下是详细信息。 操作系统:Linux 编译器:g ++
job.hpp
static string values[2] = {"hello","welcome"};
class Job
{
public:
void getValues();
};
job.cpp
#include "job.hpp"
void Job::getValues()
{
// Seg Fault Here
// i value is either 0 or 1 and is based on some external flag
cout << values[i] << endl;
}
我相信values数组没有初始化。此代码适用于AIX上的xlc ++编译器。是否有任何g ++编译器标志来初始化静态变量。
答案 0 :(得分:1)
为什么不将'value'数组变成类的静态属性?以下内容可能会有效。
<强> job.h 强>
#ifndef JOB_H
#define JOB_H
#include <string>
#include <iostream>
using namespace std;
class Job
{
public:
Job();
void getValues() const;
//declare static variable in .hpp file
static string values[2];
private:
};
#endif
<强> job.cpp 强>
#include "job.h"
//initialize variable in .cpp file
string Job::values[2]={"hello", "welcome"};
Job::Job(){}
void Job::getValues() const
{
cout << values[i] << endl;
}