[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | C++ |
Notice: | Read 1.* and use keywords (e.g. SHOW KEY/FULL KIT_CXX_VAX_VMS) |
Moderator: | DECCXX::AMARTIN |
|
Created: | Fri Nov 06 1987 |
Last Modified: | Thu Jun 05 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 3604 |
Total number of notes: | 18242 |
3452.0. "trouble initializing static STL map attribute" by CIM2NI::THORPE () Mon Feb 17 1997 14:36
I am getting a link-time error I think because I don't know how to
initialize a static attribute that is an STL map.
Small sample code is attached...
Thanks,
Bill
$ cxx/version nl:
DEC C++ V5.4-010 on OpenVMS Alpha V6.1
$ cxx/ass=nohead t
$ cxxlink t
%LINK-W-NUDFSYMS, 1 undefined symbol:
%LINK-I-UDFSYM, map<int, CimObjMgr *, less<int > >
CimObjMgr::registry
%LINK-W-USEUNDEF, undefined symbol map<int, CimObjMgr *, less<int > >
CimObjMgr::registry referenced
in psect $LINK$ offset %X00000030
in module T file CIMENG11$:[EKD_V010.WRK.THORPE.SRC]T.OBJ;20
//t.h
#include <map> // STL map definitions
class ObjMgr
{
private:
static ObjMgr *instance;
static map<int, ObjMgr *, less<int> > registry;
protected:
ObjMgr ( void );
public:
static void registerObjMgr ( int classCode, ObjMgr *aObjMgr );
static ObjMgr *makeInstance ( void );
};
//t.cxx
#include <t.h>
ObjMgr *ObjMgr::instance = NULL;
ObjMgr::ObjMgr ( void )
{
ObjMgr::registerObjMgr ( 0, this );
}
ObjMgr *
ObjMgr::makeInstance ( void )
{
if ( instance == NULL )
instance = new ObjMgr;
return instance;
}
void
ObjMgr::registerObjMgr ( int classCode, ObjMgr *aObjMgr )
{
registry [ classCode ] = aObjMgr;
}
main ( void )
{
ObjMgr *aObjMgr = ObjMgr::makeInstance ();
}
T.R | Title | User | Personal Name | Date | Lines |
---|
3452.1 | | SPECXN::DERAMO | Dan D'Eramo | Mon Feb 17 1997 14:50 | 13 |
| I believe these two in the class definition
static ObjMgr *instance;
static map<int, ObjMgr *, less<int> > registry;
would be defined like this in t.cxx
ObjMgr *ObjMgr::instance = NULL;
map<int, ObjMgr *, less<int> > ObjMgr::registry;
See also topic 3233 for how to link with a static map.
Dan
|