首页 > 解决方案 > 如何摆脱标题依赖?

问题描述

我正在开发一个软件库,其中一个标题是这样写的:

#include "exprtk.hpp"

class ExprtkWrapper {
    typedef exprtk::symbol_table<double> symbol_table_t;
    typedef exprtk::expression<double>     expression_t;
    typedef exprtk::parser<double>             parser_t;


public:

    API ExprtkWrapper( std::string expression_string );

    API ExprtkWrapper( );

    API ~ExprtkWrapper();

    API double eval(double x1 = 0.0, double x2 = 0.0, double x3 = 0.0, double x4 = 0.0);

    API double eval(std::vector<double> &p);

private:

    expression_t *expression = nullptr;

    symbol_table_t *symbol_table = nullptr;

    parser_t * parser = nullptr;    
};

它需要exprtk图书馆才能工作。问题是,这exprtk.hpp是一个仅限标题的库,我不希望在包含标题的任何地方复制它。是否有任何优雅的方法来重写标头以获取exprtk.hpp相应的 .cpp 文件?

我试过简单地将我的类重写到 cpp 文件中,只在标题中留下声明,但后来我得到了错误:

error: invalid use of incomplete type ‘class ExprtkWrapper’

标签: c++dependenciesheader-files

解决方案


推荐阅读