Re: MSVC C++ problems

From: Serassio Guido <guido.serassio@dont-contact.us>
Date: Sat, 19 Jul 2003 12:34:29 +0200

Hi Robert,

At 13.01 16/07/2003, Robert Collins wrote:

> > This seems to be the biggest left problem :
> >
> > delay_pools.cc
> > c:\work\nt-3.0\src\delayvector.h(69) : error C2629: unexpected 'class
> > DelayVector::Id ('
> > c:\work\nt-3.0\src\delayvector.h(69) : error C2238: unexpected token(s)
> > preceding ';'
> > c:\work\nt-3.0\src\delayvector.h(76) : error C2027: use of undefined type
> > 'DelayVector'
> > c:\work\nt-3.0\src\delayvector.h(41) : see declaration of
> > 'DelayVector'
>
>Here, Id is a embedded class of DelayVector. Can you try changing
>DelayVector::Pointer on line 69 to RefCount<DelayVector> ?

Making this change in delayvector.h, delaytagged.h and delayuser.h all the
unexpected 'class' errors are gone, this is the compile result:

delay_pools.cc
c:\work\nt-3.0\src\delayvector.h(76) : error C2027: use of undefined type
'DelayVector'
         c:\work\nt-3.0\src\delayvector.h(41) : see declaration of
'DelayVector'
c:\work\nt-3.0\src\delayuser.h(100) : error C2027: use of undefined type
'DelayUser'
         c:\work\nt-3.0\src\delayuser.h(68) : see declaration of 'DelayUser'
c:\work\nt-3.0\src\delaytagged.h(101) : error C2027: use of undefined type
'DelayTagged'
         c:\work\nt-3.0\src\delaytagged.h(68) : see declaration of
'DelayTagged'
c:\work\nt-3.0\src\delay_pools.cc(95) : error C2838: illegal qualified name
in member declaration
c:\work\nt-3.0\src\delay_pools.cc(101) : error C2027: use of undefined type
'Aggregate'
         c:\work\nt-3.0\src\delay_pools.cc(65) : see declaration of 'Aggregate'
c:\work\nt-3.0\src\delay_pools.cc(170) : error C2027: use of undefined type
'VectorPool'
         c:\work\nt-3.0\src\delay_pools.cc(131) : see declaration of
'VectorPool'
c:\work\nt-3.0\src\delay_pools.cc(267) : error C2027: use of undefined type
'ClassCHostPool'
         c:\work\nt-3.0\src\delay_pools.cc(222) : see declaration of
'ClassCHostPool'
c:\work\nt-3.0\src\delay_pools.cc(520) : error C2664: '__thiscall
Aggregate::AggregateId::Aggregate::AggregateId(const class
Aggregate::AggregateId &)' : cannot convert parameter 1 from 'class
Aggregate *const ' to 'const class Aggregate::AggregateI
d &'
         Reason: cannot convert from 'class Aggregate *const ' to 'const
class Aggregate::AggregateId'
         No constructor could take the source type, or constructor overload
resolution was ambiguous
c:\work\nt-3.0\src\delay_pools.cc(545) : error C2511:
'AggregateId::AggregateId' : overloaded member function 'void (class
RefCount<class Aggregate>)' not found in 'Aggregate::AggregateId'
         c:\work\nt-3.0\src\delay_pools.cc(88) : see declaration of
'AggregateId'
c:\work\nt-3.0\src\delay_pools.cc(1059) : fatal error C1004: unexpected end
of file found

> > c:\work\nt-3.0\src\acl.cc(716) : error C2664: 'delete' : cannot convert
> > parameter 1 from 'const class acl_access *const ' to 'void *'
> > Conversion loses qualifiers
>
>Ok, I've added a test case to see if my deleteSelf hack is needed on any
>platform.
>
>If you can confirm that the test case VirtualDeleteOperator works on msvc,
>then all we need is a couple of extra positives: xlc and egcs (the OS2 port).

It seems to compile fine, but at link time:

Linking...
test_tools.obj : error LNK2005: "void * __cdecl operator new(unsigned int)"
(??2@YAPAXI@Z) already defined in VirtualDeleteOperator.obj
test_tools.obj : error LNK2005: "void __cdecl operator delete(void *)"
(??3@YAXPAX@Z) already defined in VirtualDeleteOperator.obj
test_tools.obj : error LNK2005: "void * __cdecl operator new[](unsigned
int)" (??_U@YAPAXI@Z) already defined in VirtualDeleteOperator.obj
test_tools.obj : error LNK2005: "void __cdecl operator delete[](void *)"
(??_V@YAXPAX@Z) already defined in VirtualDeleteOperator.obj
Debug/VirtualDeleteOperator.exe : fatal error LNK1169: one or more multiply
defined symbols found

Regards

Guido

-
========================================================
Guido Serassio
Acme Consulting S.r.l.
Via Gorizia, 69 10136 - Torino - ITALY
Tel. : +39.011.3249426 Fax. : +39.011.3293665
Email: guido.serassio@acmeconsulting.it
WWW: http://www.acmeconsulting.it/
Received on Sat Jul 19 2003 - 04:35:06 MDT

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:20:17 MST