好的,我编写了我的单例并添加了一些方法和变量(或字段)。
#ifndef PWNN_CONFIG_PARSER_H
#define PWNN_CONFIG_PARSER_H
#include <unordered_map>
using namespace std;
typedef unordered_map<string, int> IntDict;
typedef unordered_map<string, string> StringDict;
typedef unordered_map<string, bool> BoolDict;
typedef unordered_map<string, float> FloatDict;
class pwnn_config_parser
{
private:
StringDict Strings;
FloatDict Floats;
IntDict Integers;
BoolDict Booleans;
void Push(string str);
pwnn_config_parser() = default;
~pwnn_config_parser() = default;
public:
static pwnn_config_parser* Instance() { static pwnn_config_parser s; return &s; }
pwnn_config_parser(const pwnn_config_parser&) = delete;
void operator=(const pwnn_config_parser&) = delete;
void LoadConfig(string fn);
void SaveConfig(string fn);
string GetString(string key);
int GetInt(string key);
bool GetBool(string key);
float GetFloat(string key);
void SetString(string key, string value);
void SetInt(string key, int value);
void SetBool(string key, bool value);
void SetFloat(string key, float value);
};
#endif /* PWNN_CONFIG_PARSER_H */
它成功编译为静态库,但当我尝试在我的程序中使用它的方法时这样:
pwnn_config_parser::Instance()->LoadConfig("test.conf");
我只是编译错误:
undefined reference to `pwnn_config_parser::LoadConfig(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
我做错了什么?
编辑: 有.cpp库的来源:
#include "pwnn_config_parser.h"
#include <regex>
#include <iostream>
#include <fstream>
void pwnn_config_parser::LoadConfig(string fn) {
ifstream file(fn);
string str;
while(getline(file, str)) {
Push(str);
}
}
void pwnn_config_parser::Push(string str) {
...
}