未定义的对单例方法的引用

时间:2018-02-02 05:21:02

标签: c++ c++14

好的,我编写了我的单例并添加了一些方法和变量(或字段)。

    #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) {
       ...
    }

0 个答案:

没有答案