我想根据定义加载各种头文件(模块,插件)。继承人我的方法:如何实现动态模块(在头文件中)加载c + +
template<typename T = float>
class container {
T *_data;
#ifdef mymodule1
#include mymodule1
#endif
...}
Mymodule1.h:
container<T> fooOnContainer() [maybe const] {
makesomething involving the T template parameter
}
和含有 “主” 的文件中:
#define mymodule1 "mymodule1.h"
#include "container.h"
in main { using it }
所以基本上只定义头文件将被纳入我的容器。我在库中看到了这种叫做“cimg”的方法,但是我不能让它工作,因为编译器不能推导出模板参数。它的罚款,如果我做一样的东西:
container<T>& fooOnContainer(T param) {
...
}
但是,有没有办法做到这一点像第一个“mymodule1.h”?也许操作符重载?或者如果有人不可能做到,有人会建议我采用更好更简单的方法吗? (我真不明白它是如何工作该库:))
编辑:
很抱歉,如果我是不确定的,所以这里是一些代码:
这是一个毫无意义的例子,但我想让这样的事情,但当然更复杂:
Mymodule1.h:
int getWidth() const {
return (*this)._width;
}
和智能说: “在YPE限定符不允许在非成员函数“
又如:
T getPos(int x) const {
T* px;
return _data[x];
}
和智能说: ‘T’是未定义的,标识符‘_data’未定义
实际上你是如何使用它的(http://stackoverflow.com/posts/26241935/edit)? – 2014-10-07 17:46:09
您可以创建一个[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)并向我们展示?还请包括您拥有的任何和所有错误。 – 2014-10-07 17:58:20
例如: container <> img; ... load image ... container <> dest; dest = image.fooOnContainer([阈值或其他]) – ex4cutor 2014-10-07 18:00:56