🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.c++
Article #191

Re: Static miembros de una clase en una dll

#191
From: Zephryn Xirdal
Date: Sat, 25 Sep 2010 15:45
66 lines
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-mail
References: <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=