如何在另一类设置静态变量

How to set static variable in another class?

本文关键字:一类 设置 静态 变量      更新时间:2023-10-16

我正在尝试在coeffs.cpp中设置静态变量:

#include "Coeffs.h"
class Coeffs
{
    public:
    double Coeffs::alpha5b = 0.0;
};

使用标头文件

#ifndef COEFFS_H
#define GOEFFS_H
class Coeffs
{
    public:
    static double alpha5b;
};
#endif

使用以下代码:

#include <iostream>
#include <fstream>
#include <string>
#include "json/json.h"
#include "Coeffs.h"
using namespace std;
int main()
{
    cout << "start" << endl;
    string json;
    ifstream inputStream;
    inputStream.open("coeffTest.json");
    inputStream >> json;
    Json::Value root;
    Json::Reader reader;
    bool parseSuccess = reader.parse(json, root);
    if(!parseSuccess)
    {
        cout << "failed" << endl;
    }
    else
    {
        Coeffs::alpha5b = 1.1;
        //Coeffs::alpha5b = root.get("alpha5b", "NULL").asDouble();
        //double item1[] = root.get("delta21b", "NULL").asDouble();
        //cout << "alpha5b is: " << Coeffs::alpha5b << endl;
    }
    cout << "done" << endl;
}

但是每次我编译时都会得到这个:

pottsie@pottsie:~/Documents/CoeffsJSON$ g++ -o JsonToCoeffs JsonToCoeffs.cpp -ljson_linux-gcc-4.6_libmt
/tmp/ccFxrr0k.o: In function `main':
JsonToCoeffs.cpp:(.text+0x10b): undefined reference to `Coeffs::alpha5b'
collect2: ld returned 1 exit status

ive浏览了其他一些类似的问题,找不到任何可行的东西。我尝试添加构造函数并制作一个对象,但是后来我仍然遇到相同的错误。有人知道该怎么办吗?

类声明应放在标题(coeffs.h)

#ifndef COEFFS_H
#define COEFFS_H
class Coeffs
{
    public:
    static double alpha5b;
};
#endif

但是源文件中静态成员的初始化(.cpp,.cxx):

#include "Coeffs.h"
double Coeffs::alpha5b = 0.0;

在您的coeffs.cpp中:

#include "Coeffs.h"
double Coeffs::alpha5b = 0.0;