我正在开发一个软件库,其中的标头之一是这样写的:
#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’