Cześć,
Dzisiaj chciałbym was zapytać co począć z fantem.
Problem wygląda następująco:
- Zdefiniowałem sobie klasę która zawiera wektor stl, którego element jest nie znanego typu (klasa szablonowa).
- Klasę chcę exportować, ma być częścią silnika geometrii (do dll).
W hederze odpowiedzialnym za sterowanie exportem mam:
#ifdef MOGE_EXPORT
#define MOGE_API __declspec(dllexport)
#define MOGE_API_TEMPLATE
#else
#define MOGE_API __declspec(dllimport)
#define MOGE_API_TEMPLATE extern
#endif
W projekcie silnika mam dodaną definicję preprocesora:
MOGE_EXPORT
Co do klasy którą chccę exportować, jej deklaracja:
template <typename Type>
class MOGE_API Point
{
public:
...
Zmienna która w zasadzie powoduje errory (member tej klasy):
private:
std::vector<Type> axisValue;
};
Wcześniej sobie dawalem radę dodając coś w stylu:
template <typename Type> class MOGE_API std::vector<Type>;
Teraz to nie działa. Wyskakuje error:
error C2079: 'Moge::Point<Type>::axisValue' uses undefined class 'std::vector<Type,std::allocator<_Ty>>'
wskazując na linjkę którą podałem wyżej, z deklaracją zmiennej
axisValue
.
Czy można inaczej eksportować taką klasę? Jednym z rozwiązań jest użycie pointerów, tzn., że zamieniam zmienną
axisValue
na pointera i wszystko bangla.
Ale wolałbym raczej nie korzystać z nich kiedy jest inne rozwiązanie.
Używam visuala 2015 w wersji enterprise, mój OS to win 7.