Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Prodblém se vnořenou třídou, šablonou a dll-exportem

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Prodblém se vnořenou třídou, šablonou a dll-exportem

Autor: Neon

10:55:38 04.10.2011

Jen doplněk - bez toho smajlíka, co se doplňuje tady ve fóru v kódu:

[code]
template struct X
{ X (void) { }
};
[/code]

Citovat příspěvek

 

Prodblém se vnořenou třídou, šablonou a dll-exportem

Autor: Neon

10:52:42 04.10.2011

Ahoj,

mám problém. Mějme kód:

[code]
template struct X
{ X() { }
};

struct __declspec(dllexport) A
{ struct __declspec(dllexport) AB
{ int i;
};

typedef X XAB;

template struct __declspec(dllexport) X ; // error C2252: an explicit instantiation of a template can only occur at namespace scope
// Tohle ovšem fungovalo ve VS2008

static XAB x; // warning C4251: 'A::x' : struct 'X' needs to have dll-interface to be used by clients of struct 'A'
};
[/code]

Tj. třída má být exportována do DLL a zároveň obsahuje vořenou třídu, která má být také exportována do DLL.

Uvnitř třídy se používá šablona.

Prvek třídy používá šablonu s parametrem rovným podtřídě; a tady vzniká problém: nedaří se mi vynutit instancializaci šablony s parametrem rovným podtřídě, protože instancializaci lze provést jenom v globálním namespacu; v globálním namespacu zas není "dostupná" podtřída třídy.

Nedaří se mi najít způsob, jak kód upravit, aby proběhl bez "spodního" warningu a bez chyby.

BTW: Uvedená "stavba" fungovala ve VS2008, teď zkouším VS2010EE a - popsané problémy.

Měl by někdo nějaký nápad, jak zdroják upravit, aby byl správně? - Aby šel zkompilovat bez warningů a bez chyb?

TIA.

Neon

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: