Как избавиться от зависимости заголовка? - PullRequest
0 голосов
/ 13 сентября 2018

Я работаю над библиотекой программного обеспечения, где один из заголовков написан так:

#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’
...