如何定义 class 的静态成员
How to define Static member of a class
我正在检索存储在 json 文件中的路径列表,我在接收路径时没有遇到问题,但我收到错误 undefined reference to `objectFactory::objList[abi:cxx11]'
当我尝试将路径添加到class.
的静态向量
我尝试更改两者的类型,看看是否可能是它正在寻找具有相同名称但类型不同的变量的问题,但可惜问题仍然存在。
我也尝试将向量设置为最终列表的另一个向量,但这并没有解决问题。
objectFactory.h:
#ifndef PROJECT2DTD_OBJECTFACTORY_H
#define PROJECT2DTD_OBJECTFACTORY_H
#include <vector>
#include <string>
#include <fstream>
#include <nlohmann/json.hpp>
class objectFactory {
public:
static void genObjList();
private:
static std::vector<std::string> objList;
};
#endif //PROJECT2DTD_OBJECTFACTORY_H
objectFactory.cpp
#include <iostream>
#include "objectFactory.h"
using json = nlohmann::json;
void objectFactory::genObjList() {
auto file = json::parse(std::fstream("assets/objects/objectList.json"))["objects"];//[0]["path"]
for(auto i = 0; i != file.size(); ++i) {
auto path = file[i]["path"].get<std::string>();
objList.emplace_back(path);
}
}
有谁知道我可能做错了什么?
您需要定义该数据成员。例如,在您的 cpp 文件的顶部:
std::vector<std::string> objectFactory::objList;
我正在检索存储在 json 文件中的路径列表,我在接收路径时没有遇到问题,但我收到错误 undefined reference to `objectFactory::objList[abi:cxx11]'
当我尝试将路径添加到class.
我尝试更改两者的类型,看看是否可能是它正在寻找具有相同名称但类型不同的变量的问题,但可惜问题仍然存在。
我也尝试将向量设置为最终列表的另一个向量,但这并没有解决问题。
objectFactory.h:
#ifndef PROJECT2DTD_OBJECTFACTORY_H
#define PROJECT2DTD_OBJECTFACTORY_H
#include <vector>
#include <string>
#include <fstream>
#include <nlohmann/json.hpp>
class objectFactory {
public:
static void genObjList();
private:
static std::vector<std::string> objList;
};
#endif //PROJECT2DTD_OBJECTFACTORY_H
objectFactory.cpp
#include <iostream>
#include "objectFactory.h"
using json = nlohmann::json;
void objectFactory::genObjList() {
auto file = json::parse(std::fstream("assets/objects/objectList.json"))["objects"];//[0]["path"]
for(auto i = 0; i != file.size(); ++i) {
auto path = file[i]["path"].get<std::string>();
objList.emplace_back(path);
}
}
有谁知道我可能做错了什么?
您需要定义该数据成员。例如,在您的 cpp 文件的顶部:
std::vector<std::string> objectFactory::objList;