Я хочу загрузить различные файлы заголовков (модули, плагины) в зависимости от определений. Heres мой подход:Как реализовать динамический модуль (в файлах заголовков) loading 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»? Может быть, с перегрузкой оператора? Или кто-то может предложить мне лучший и простой подход, если это невозможно сделать? (Я действительно не понимаю, как это работает для этой библиотеки :))
Edit:
Извините, если я был неопределенным, поэтому здесь некоторый код:
Это бессмысленно пример, но я хочу сделать что-то подобное, но, конечно, более сложная:
Mymodule1.h:
int getWidth() const {
return (*this)._width;
}
и IntelliSense говорит: "а Тип отборочные не допускается членом Церкви функции "
Другой пример:
T getPos(int x) const {
T* px;
return _data[x];
}
и IntelliSense говорит: „T“не определено, идентификатор„_data“неопределен
Как вы ['using it'] (http://stackoverflow.com/posts/26241935/edit) на самом деле? –
Можете ли вы создать [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) и показать нам? Кроме того, пожалуйста, укажите любые и все ошибки, которые у вас есть. –
например .: контейнер <> img; ... загрузить изображение ... контейнер <> dest; dest = image.fooOnContainer ([пороговое значение или что-то]) – ex4cutor