C ++ создает экземпляр шаблона класса из DLL
Я попытался сделать DLL, которая содержит:
базовый шаблон класса, только с виртуальным деструктором и без атрибутов (Я назвал это MatrixInterface)
производный класс с конструкторами, деструктором, operator = и атрибутами (матричный класс)
функция, которая возвращает указатель базового класса на новый производный объект:
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
template
MatrixInterface DLL_EXPORT * CreateMatrixInstance(unsigned int n,unsigned int m)
{
return new matrix(n,m);
}
Я хотел установить матричный класс в моей программе, используя эту функцию, но я не могу назначить указатель функции на эту функцию, и я нене понимаю почему. Таким образом, я могу загрузить любую функцию, которая не является шаблонной функцией.
#include
#include
using namespace std;
template
class MatrixInterface
{
public:
virtual ~MatrixInterface(void);
};
typedef MatrixInterface* (*Fptr)(unsigned int,unsigned int);
int main(int argc, char* argv[])
{
Fptr p;
MatrixInterface *x;
char path[]="basicmatrix.dll";
HINSTANCE hDll = LoadLibrary(path);
cout