Article View: es.comp.lenguajes.c++
Article #191Re: Static miembros de una clase en una dll
From: Zephryn Xirdal
Date: Sat, 25 Sep 2010 15:45
Date: Sat, 25 Sep 2010 15:45
66 lines
2711 bytes
2711 bytes
On Thu, 23 Sep 2010 11:32:38 +0200, Josemi <josemiantelo@gmail.com> wrote:
> �Hola!
>
> Me ha pasado un caso curioso con una clase que tiene un miembro
> static definida en una dll. Me explico
>
> dll.h
>
> class __declspec (dllexport) A
> {
> public:
> static int valor;
>
> PinrtOut ()
> {
> TRACE1(valor);
> }
> }
>
> dll.cpp
> A::valor=23;
>
> main.h
> class B:A
> {
> }
>
> main.cpp
> A::valor;
> {
> A objeto;
>
> objeto.valor = 34;
> objeto.PrintOut();
> }
>
> Bien, sucede que el valor dado en "main.cpp" valor objeto.valor = 34
> cuando entra en PrintOut �sta imprime 23
>
> �Se te ocurre a que es debido? aunque tengo alguna idea y el problema
> radica en que estoy obligado a declarar A::valor en las dos rutinas y
> claro el compilador crea dos instancias de A::valor �se podr�a hacer
> que �l solo viera una? o alguna idea de como solventar este problema.
> Se me ocurren definir rutinas que suplan esta deficiencia, pero yo
> buscaba algo menos complicado.
>
>
Porque el A::valor que declaras en main es diferente y oculta al A::valor
de la DLL.
De todos modos ese c�digo no creo que compile tal y como lo pones.
Pon "extern" delante del "A::valor".
> Un mill�n de gracias
>
> Josemi
--
Microsoft Visual C++ MVP => http://geeks.ms/blogs/rfog
========================================
El hombre no vive de otra cosa que de religi�n o de ilusiones.
-- Giacomo Leopardi. (1798-1837) Poeta italiano.
Technical Details
Message-ID:
<op.vjlh2gwsk82j6j@red-mars>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!proxad.net!feeder1-2.proxad.net!weretis.net!feeder4.news.weretis.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mailReferences:
<85064614-98ba-48da-b47f-5db346a11c08@y3g2000vbm.googlegroups.com>Show Full Headers
Complete Article Headers
X-Google-Thread: f53ec,d36fac836f5e4a9b X-Google-NewGroupId: yes X-Google-Attributes: gidd2efa0cfdc,domainid0,public,usenet X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!proxad.net!feeder1-2.proxad.net!weretis.net!feeder4.news.weretis.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail From: "Zephryn Xirdal" <no@mail.com> Newsgroups: es.comp.lenguajes.c++ Subject: Re: Static miembros de una clase en una dll Date: Sat, 25 Sep 2010 17:45:42 +0200 Organization: A noiseless patient Spider Lines: 66 Message-ID: <op.vjlh2gwsk82j6j@red-mars> References: <85064614-98ba-48da-b47f-5db346a11c08@y3g2000vbm.googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed; delsp=yes Content-Transfer-Encoding: 8bit Injection-Date: Sat, 25 Sep 2010 15:45:44 +0000 (UTC) Injection-Info: mx03.eternal-september.org; posting-host="zFiOlsRnkrSkvQiRqwtN4w"; logging-data="9806"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX184Gv/jFBBldAwbYxVjLis4" User-Agent: Opera Mail/10.62 (Win32) Cancel-Lock: sha1:DrkHlQZNLb4o4waLTKf9Ug7hBr4=