bug-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

just a template instantiation problem in C++


From: Christian TEMPLIER
Subject: just a template instantiation problem in C++
Date: Fri, 06 Oct 2000 13:34:39 +0200

hello ,
*
i use this compiler :

/opt/gcc/bin/gcc -v
Reading specs from
/opt/gcc/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2/specs

i have an error with this code

work.ch:29: `X::FRAME<X>' is not a valid declarator
work.ch:29:   perhaps you want `typename X::FRAME<X>' to make it a type
work.ch:29: parse error in method specification before `*'
work.ch:33: parse error before `*'
work.ch:42: `X::FRAME<X>' is not a valid declarator
work.ch:42:   perhaps you want `typename X::FRAME<X>' to make it a type
work.ch:42: parse error before `::'


i expect a correction in next compiler  or a coorective action on this
file


thanks
regards

.....



==========================================================The file

#define DERIVED_AUTOMATON OPERATIONAL_SEMANTICS

class DERIVED_AUTOMATON
{int state ;
public :
DERIVED_AUTOMATON() ;
~DERIVED_AUTOMATON() ;
} ;


template < class INTERFACE >

class CLUSTER_BOA_IMPL : public DERIVED_AUTOMATON
{public :

template < class X>
class BEHAVIOUR ;

template < class X>
class FRAME ;

template < class X>
class BEHAVIOUR : public DERIVED_AUTOMATON
 {public :

  class NEW_BEHAVIOUR_WORKSPACE  : public DERIVED_AUTOMATON
   {X ::FRAME<X> *dataQueuePicture;
   public :
   NEW_BEHAVIOUR_WORKSPACE() : dataQueuePicture(NULL) ,
DERIVED_AUTOMATON() {} ;
   ~NEW_BEHAVIOUR_WORKSPACE() {} ;
   } ;

 NEW_BEHAVIOUR_WORKSPACE orWorkspace ;

 class READ_QUEUE : public DERIVED_AUTOMATON
  {public :
   typedef int  THIS_TYPE ;


   typedef X ::FRAME<X>::QUEUE::QUEUE_ELEMENT _QUEUE_ELEMENT_ ;

   _QUEUE_ELEMENT_ *ThisElement ;

  READ_QUEUE() : ThisElement(NULL) , DERIVED_AUTOMATON() {} ;
  ~READ_QUEUE() {} ;
  } ;

 READ_QUEUE firstRead ;

 BEHAVIOUR() :
    orWorkspace() ,
    firstRead() , DERIVED_AUTOMATON()
    {} ;
 ~BEHAVIOUR() {} ;
 } ;

template < class X>
class FRAME : public DERIVED_AUTOMATON
 { X ::BEHAVIOUR<X>::READ_QUEUE::THIS_TYPE data ;

 public :
  class QUEUE : public DERIVED_AUTOMATON
   {
   public :
    class QUEUE_ELEMENT : public DERIVED_AUTOMATON
     {
     public :
      QUEUE_ELEMENT() , DERIVED_AUTOMATON() {} ;
      ~QUEUE_ELEMENT()  {} ;
     } ;
   QUEUE_ELEMENT firstQueuElement;

   QUEUE() : firstQueuElement() , DERIVED_AUTOMATON() {} ;
   ~QUEUE() {} ;

   } ;
 QUEUE firstQueue;
 FRAME() : firstQueue() , data(0)  , DERIVED_AUTOMATON() {} ;
 ~FRAME() {} ;
 } ;

FRAME<CLUSTER_BOA_IMPL<INTERFACE> > mainData;

BEHAVIOUR<CLUSTER_BOA_IMPL<INTERFACE> >  mainBehaviour ;

CLUSTER_BOA_IMPL() : mainData() , mainBehaviour() ,
DERIVED_AUTOMATON()
 {} ;
~CLUSTER_BOA_IMPL() {} ;
} ;

class THIS_INTERFACE : public CLUSTER_BOA_IMPL<THIS_INTERFACE>

{public :
THIS_INTERFACE() ;

virtual ~THIS_INTERFACE() ;

} ;

DERIVED_AUTOMATON::DERIVED_AUTOMATON() :
state(0)
{
} ;

DERIVED_AUTOMATON::~DERIVED_AUTOMATON()
{
} ;

THIS_INTERFACE::THIS_INTERFACE() :
CLUSTER_BOA_IMPL<THIS_INTERFACE>()
{
} ;

THIS_INTERFACE::~THIS_INTERFACE()
{
} ;

int main()
{THIS_INTERFACE *data= new THIS_INTERFACE() ;
delete data;
} ;




--
 ____________________________________________________________________________
|                |
|                                             |
|   ___    ___   | TEMPLIER
|                                             |
|  /__ \  / __\  |  christian  | Service Technique de la Navigation
Aerienne |
|   __\ \/ /
|_____________|_____________________________________________|
|  / __   |   _  |
|                                             |
|  \ \_\   \_//  | Toulouse    | web
http://www.stna.dgac.fr/~templier       |
|   \___/\___/   |      France | E_mail :
address@hidden              |
|                |             | tel    :
05.62.14.57.47                     |
 ----------------------------------------------------------------------------
[ Oz web page           http://www.ps.uni-sb.de/oz/   ]
[ list administration   address@hidden ]





reply via email to

[Prev in Thread] Current Thread [Next in Thread]