Go Premium for a chance to win a PS4. Enter to Win

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 516
  • Last Modified:

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 >

  static RWTPtrOrderedVector< RWCString > _slask;


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

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


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/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
  • 2
1 Solution
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.
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.
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

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

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


Featured Post


Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now