dllexport избегая создания шаблона в заголовочном файле

У меня есть класс C ++, подобный следующему, который прекрасно компилируется, пока я не попытаюсь экспортировать его из DLL.

MyClass.h:

class SomeClassNotDefinedHere;

class MyClass {
protected:
templated<SomeClassNotDefinedHere> m_member;
}

Если я экспортирую это с помощью

 class __declspec(dllexport) MyClass

Он не компилируется, пытаясь создать экземпляр всех встроенных членов templated<SomeClassNotDefinedHere>,

Есть ли простой способ избежать этого? Я не хочу добавлять SomeClassNotDefinedHere в качестве зависимости каждой библиотеки, использующей MyClass.

Некоторые из шаблонного кода, это умный указатель, как класс. (пытался сохранить мой пример минимальным, реальный шаблонный класс OSG :: ref_ptr)

template<class T>
class templated
{
public:
typedef T element_type;

templated() : _ptr(0) {}
templated(T* ptr) : _ptr(ptr) { if (_ptr) _ptr->ref(); }
templated(const templated& rp) : _ptr(rp._ptr) { if (_ptr) _ptr->ref(); }
private:
T* _ptr;
}

Избегать классов или больших редизайнов — это то, чего я бы предпочел избегать, код уже используется в Linux.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector