CINT and MFC problem :(

From: devinim.solen@tde.alstom.com
Date: Mon Feb 01 1999 - 12:37:37 MET


I am using some MFC classes with cint as following lines; and I don't wanna use MFC class as defined
member (For example as pointer).

#if !defined(__CINT__)
class CChMenu : public CMenu
#else
class CChMenu
#endif // !defined(__CINT__)
{
public:
     CChMenu();
     ~CChMenu();
};

... and to generate pre-compiled library script is;

cint -w1 -zChWinLib -nG__cpp_ChWinLib.cxx -D__MAKECINT__  -c-1 -A ChMenu.h

then when I compile it, get the error as;

D:\Projects\ChWinLib\G__cpp_ChWinLib.cxx(580) : error C2558: class 'CChMenu' : no copy constructor
available.

for following cint generated line;

static int G__CChMenu_CChMenu_1_0(G__value *result7,char *funcname,struct G__param *libp,int hash) {
   CChMenu *p=NULL;
      p = new((void*)G__getgvp()) CChMenu(*(CChMenu*)libp->para[0].ref); --------> Error occurred
line !!!!
      result7->obj.i = (long)p;
      result7->ref = (long)p;
      result7->type = 'u';
      result7->tagnum = G__get_linked_tagnum(&G__LN_CChMenu);
   return(1 || funcname || hash || result7 || libp) ;
}

It need to be defined constructor CChMenu(CChMenu& menu), I dunno "Why ?". If I change my class
defination as follows;

#if !defined(__CINT__)
class CChMenu : public CMenu
#else
class CChMenu
#endif // !defined(__CINT__)
{
public:
     CChMenu();
     CChMenu(CChMenu& menu);
     ~CChMenu();
};

compiler error solves but then the poblem occurs in cint;

static int G__CChMenu_CChMenu_0_0(G__value *result7,char *funcname,struct G__param *libp,int hash) {
   CChMenu *p=NULL;
   if(G__getaryconstruct())
     if(G__PVOID==G__getgvp())
       p=new CChMenu[G__getaryconstruct()];
     else {
       for(int i=0;i<G__getaryconstruct();i++)
         p=new((void*)(G__getgvp()+sizeof(CChMenu)*i)) CChMenu;
       p=(CChMenu*)G__getgvp();
     }
   else p=new((void*)G__getgvp()) CChMenu; ------------------>>>>>>>>>>>>>>>>>>>>>>>> Because
G__getgvp() returns -1 always.
      result7->obj.i = (long)p;
      result7->ref = (long)p;
      result7->type = 'u';
      result7->tagnum = G__get_linked_tagnum(&G__LN_CChMenu);
   return(1 || funcname || hash || result7 || libp) ;
}

So I need to help :) at this point.
The thrick I have been found to use as p=new CChMenu instead instead of p=new((void*)G__getgvp())
CChMenu; but I am not sure to use it like correct way. But it works.
What G__getgvp to do, I dunno exacly.


Best regards


Devinim SOLEN



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:28 MET