Я работаю над библиотекой программного обеспечения, где один из заголовков написан так:
#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’