Есть шаблонный класс допустим по работе с матрицами, реализующий основные
операции над матрицей. Экспортировать пытаюсь через __declspec(dllexport). При
подстановке любого типа у которого не определены операторы, скажем, умножения
компилятор говорит мне об этом. Хотя я нигде не пытаюсь этот тип перемножать.
Если убрать __decl..., то всё оки — он начинает себя вести как хорошо воспитанный
шаблон, т.е. компилить только то что я использую.
Не хочет компилить.
Обидно. Ничего не сделал, только вошёл.
class __declspec(dllexport) CMatrix : public Matrix<CClass>
{
...
};
Я, конечно, нашёл решение, оно мне кажется "наименьшим злом",
но никак не решение проблемы. Но, блин, не красиво это. И почему
он пытается подставить мой тип туда, куда я не просил?
Всё замечательно компилируется и линкуется.
class CCMatrix : public Matrix<CClass>{};
// а вот
// typedef Matrix<CClass> CCMatrix;
// не работает
class __declspec(dllexport) CMatrix : public CCMatrix
{
...
};
В качестве компилятора использую MS VC7.1.
В и-нете натолкнулся на похожий вопрос, а вот ответов не нашёл.