On Jul 3, 11:13 am, Scoots <bssalm...@traxcorp.com> wrote:
> On Jul 3, 10:54 am, "Victor Bazarov" <v.Abaza...@comAcast.net> wrote:
>
>
>
>
>
> > Scoots wrote:
> > > I know the usually applied workaround for multiple definitions of
> > > header files, but I have a problem on this one.
>
> > > This time, I can't just ifndef the header file that defines my
> > > structure.
>
> > > So I have two classes that I've managed to dodge around this problem
> > > for a while, but now I need the include in both classes. This wasn't
> > > a problem until now, when I'm trying to declare an stl map with a
> > > structure as a data type.
>
> > > All I need is that structure, I don't need the rest of it. Is there a
> > > way to extern a structure? Or do a forward declaration? I have the
> > > include fine in the .c file, but now I want a member variable and I'm
> > > not sure how to get it there.
>
> > Usually, if you need a map of your type, the type has to be completely
> > defined, a forward declaration just won't do.
>
> > I am sorry, I can't really grasp what you're saying about managing to
> > dodge stuff and knowing the usually applied work-around. Perhaps you
> > could just post a distilled version of your code...
>
> > V
> > --
> > Please remove capital 'A's when replying by e-mail
> > I do not respond to top-posted replies, please don't ask- Hide quoted text -
>
> > - Show quoted text -
>
> Yeah, sorry, I knew at the time it was vague but I couldn't find my
> definition. Finally managed to dig it up, and it is not an anonymous
> struct, fortunately. In researching this, I've found references that
> you can't forward declare a typedef'ed anonymous struct, and while
> this is typdef'ed, it isn't anonymous.
>
> in filea.h (inside of a dll that is included through rt.h)
> typedef struct _CBREQ /* cbr */
> {
> LONG cbIndex;
> LONG cbOffset;
> LONG cbType;
>
> } CBREQ;
>
> programwnd.h:
> #include "rt.h" //no real way to move this to programwnd.cpp, same
> dependencies I need in prgengine.h
>
> class programwnd{
>
> }
>
> Prgengine.h:
> #include <map>
>
> class programwnd; //forward declaration for pointer to "owner"
>
> class Prgengine{
>
> private:
> map<string,CBREQ> variableMap
> programwnd *m_masterWnd
>
> }
>
> in Prgengine.cpp:
>
> #include "programwnd.h"
> #include "Prgengine.h"- Hide quoted text -
>
> - Show quoted text -
for debug purposes only I managed to get it to:
programwnd:
#include "prgengine.h"
prgengine.h:
#include "rtexec2.h"
class CProgramWnd;
class Prgengine{
private:
map<string,CBREQ> variableMap;
programwnd *m_masterWnd ;
}
prgengine.cpp:
#include "PrgStackEngine.h"
#include "programwnd.h"
which removes the need for forward declaration through nested headers
(ick), but it works for debugging and getting this going.
and I get ~20 of about these error messages: Is that a problem?
c:\program files\microsoft visual studio\vc98\include\xtree(200) :
warning C4786: '?rbegin@?$_Tree@HU?$pair@$$CBHU_CBREQ@@@std@@U_Kf n@?
$map@HU_CBREQ@@U?$less@H@std@@V?$allocator@U_CBREQ @@@3@@2@U?
$less@H@2@V?$allocator@U_CBREQ@@@2@@std@@QAE?AV?$r ever
se_bidirectional_iterator@Viterator@?$_Tree@HU?$pa ir@$
$CBHU_CBREQ@@@std@@U_Kfn@?$map@HU_CBREQ@@U?$less@H @std@@V?
$allocator@U_CBREQ@@@3@@2@U?$less@H@2@V?$allocator @U_CBREQ@@@2@@std@@U?
$pair@$$CBHU_CBREQ@@@3@AAU43@PAU43@H@2@XZ' : identifier was trunca
ted to '255' characters in the browser information
|