On 13/03/07, Pete Robbins <[EMAIL PROTECTED]> wrote:
On 13/03/07, Caroline Maynard <[EMAIL PROTECTED]> wrote:
>
> After getting up to date, I'm seeing:
>
> SequenceImpl.cpp
> c:\dev\pecl\sdo\commonj\sdo\sequenceimpl.h(344) : error C4716:
> 'commonj::sdo::SequenceImpl::seq_item::operator=' : must return a value
> NMAKE : fatal error U1077: '"cl.exe"' : return code '0x2'
> Stop.
>
> Now the code in question is
> // Copy assignment
> seq_item& operator=(const seq_item& sin)
> {
> if (freeText)
> {
> delete freeText;
> }
> if (sin.freeText != 0)
> {
> freeText = new SDOValue(*sin.freeText);
> }
> }
>
> which indeed doesn't return a value. I'm just puzzled why this is only
> happening to me. I would raise a JIRA, but it doesn't seem like a VC6
> problem, and I can't see why else it would be different.
>
> --
> Caroline
>
This compiles fine on Linux, Nac
Nac = Mac :-(
and Windows using VC Express (V8?). I assume there is an implied return
*this; at the end which the earlier compiler isn't adding. There is another
problem with this in that a correct implementation should always check
that it is not assigning to itself. This code would fail wih:
seq_item x = blah;
x=x;
It should look something like:
// Copy assignment
seq_item& operator=(const seq_item& sin)
{
*if(this != sin)*
* {*
if (freeText)
{
delete freeText;
}
if (sin.freeText != 0)
{
freeText = new SDOValue(*sin.freeText);
}
* }*
* return *this;*
}
I'll fix it up
Cheers,
--
Pete
--
Pete