Rogue Wave RWTPtrHashDictionary-template as static

I am trying to use the RWTPtrHashDictionary-template as a static member
in a class, but my attempt at it fails to compile.
I am using Solaris2.5.1 with Sun C++-compiler 4.1. The Tools.h I use
is the one that comes with SunSoft VisualWorkshop C++ v 2.1.

Thanks a lot for any help

regards bård

My code:

#include <rw/tpordvec.h>
#include <rw/tphdict.h>
#include <rw/cstring.h>

typedef unsigned (*RWCStringHashFunction)(const RWCString& string);

unsigned hashString(const RWCString& string)
{
  return string.hash();
}

class Fails
{
  static RWTPtrHashDictionary< RWCString, RWCString >
_dict(RWCStringHashFunction);

  static RWTPtrOrderedVector< RWCString > _slask;

  Fails();
};

RWTPtrOrderedVector< RWCString > Fails::_slask; // ok

RWTPtrHashDictionary< RWCString, RWCString > Fails::_dict(hashString);
//fails to compile

Fails::Fails()
{
}

and the what the compiler thinks of it:

cd /home/inga/ttbwt/MOS/lib/
make -k Fails.o
CC -g -D__BUILTIN_VA_ARG_INCR  -v -V -ptv -sb  -I.
-I/home/inga/ttbwt/FMNETT/lib  -I/usr/openwin/share/include
-I/opt/SUNWspro/SC4.0/include/CC -I/usr/openwin/include  -DSVR4
-DSYSV      -c  Fails.C
CC: SC4.0 18 Oct 1995 C++ 4.1
### CC: Note: LM_LICENSE_FILE = /progs/dtidir/dtilicense.dat
### CC: Note: NLSPATH =
/opt/SUNWspro/bin/../SC4.0/bin/../lib/locale/C/LC_MESSAGES/%N
/opt/SUNWspro/bin/../SC4.0/bin/ccfe -sb -y-o -yFails.o -V -I.
-I/home/inga/ttbwt/FMNETT/lib -I/usr/openwin/share/include
-I/opt/SUNWspro/SC4.0/include/CC -I/usr/openwin/include -y-fbe
-y/opt/SUNWspro/bin/../SC4.0/bin/fbe -y-xarch=generic -y-verbose -O0
-ptf /tmp/18180%1.%2 -ptv -ptx /opt/SUNWspro/bin/../SC4.0/bin/CC -ptk
"-g -D__BUILTIN_VA_ARG_INCR -v -ptv -sb -I.
-I/home/inga/ttbwt/FMNETT/lib -I/usr/openwin/share/include
-I/opt/SUNWspro/SC4.0/include/CC -I/usr/openwin/include -DSVR4 -DSYSV -c
" -D__SunOS_5_5_1 -D__SUNPRO_CC=0x410 -Dunix -Dsun -Dsparc -D__sparc
-D__unix -D__sun -D__BUILTIN_VA_ARG_INCR -D__SVR4 -g +d -y-g
-I/opt/SUNWspro/SC4.0/include/CC -I/opt/SUNWspro/SC4.0/include/cc
-D__BUILTIN_VA_ARG_INCR -DSVR4 -DSYSV Fails.C -s /tmp/ccfe.18180.0.s
ccfe: SC4.0 10 May 1996 patch 102934-06
"Fails.C", line 23: Error: static Fails::_dict(unsigned(*)(const
RWCString&)) is not a static data member.
1 Error(s) detected.
*** Error code 1
make: Warning: Target `Fails.o' not remade because of errors

Compilation finished at Thu May  8 10:50:08
ttbwtAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

dkarrCommented:
Your member "_dict" is actually being declared as a member function which returns a RWTPtrHashDictionary and has a single parameter which is a RWCStringHashFunction.  If you meant this to be a function, you need to define its implementation.  The form you are trying to use to define it makes it look (and I believe you thought) like a data member, but it is not.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
ttbwtAuthor Commented:
He didn't tell me how to solve the problem, only that there is
a problem and a vague hint as to where the problem is.

I am still at a loss as to what to do, so I would like to know
how to actually resolve the problem.
0
dkarrCommented:
As I alluded to before, we need to change _dict from a function into an object.

Change your class declaration to the following:

class Fails
{
   Fails();

   static RWTPtrHashDictionary< RWCString, RWCString > _dict;
   static RWTPtrOrderedVector< RWCString > _slask;
};

RWTPtrOrderedVector< RWCString > Fails::_slask;
RWTPtrHashDictionary<RWCString, RWCString> Fails::_dict(hashString);

0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C++

From novice to tech pro — start learning today.