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/
