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)" ([EMAIL PROTECTED]@Z) already defined in VirtualDeleteOperator.obj
test_tools.obj : error LNK2005: "void __cdecl operator delete(void *)" ([EMAIL PROTECTED]@Z) already defined in VirtualDeleteOperator.obj
test_tools.obj : error LNK2005: "void * __cdecl operator new[](unsigned int)" ([EMAIL PROTECTED]@Z) already defined in VirtualDeleteOperator.obj
test_tools.obj : error LNK2005: "void __cdecl operator delete[](void *)" ([EMAIL PROTECTED]@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: [EMAIL PROTECTED]
WWW: http://www.acmeconsulting.it/

Reply via email to