08/05/09 10:36
lorenzo
Ok il titolo non rende molto bene l'idea della mia domanda...ma mi piaceva
allora, passiamo alle cose serie...ho una classe:
class Int: Object
{
private:
int _n;
public:
Int(int);
Int();
Int * Get();
int GetInteger();
Int * operator=(int);
Int * operator=(Int *);
Object * Clone();
};
Int::Int(int n)
{
_n = n;
}
Int::Int()
{
_n = 0;
}
int Int::GetInteger()
{
return _n;
}
Int * Int::Get()
{
return (Int *)Clone();
}
Int * Int::operator=(Int *op2)
{
_n = op2->GetInteger();
return this;
}
Int * Int::operator=(int op2)
{
_n = op2;
return this;
}
Object * Int::Clone()
{
Int *copy = new Int();
copy = this;
return copy;
}
la classe object si limita ad esporre Clone come funzione virtuale
Allora il mio problema sono i due operator=
Visual studio 08 non mi segnala nessun errore ma se provo a fare:
Int *n = new Int();
n = 10;
cout<<n->GetInteger();
mi viene segnalato che è impossibile convertire int in Int *, cosa che non dovrebbe succedere visto che c'é l'operator=(int)
sbaglio forse qualcosa?(domanda ovvia e stupida dato che non funziona)
ps: non ho messo i tag code dato che modificavano Int in int e così non si capiva niente
allora, passiamo alle cose serie...ho una classe:
class Int: Object
{
private:
int _n;
public:
Int(int);
Int();
Int * Get();
int GetInteger();
Int * operator=(int);
Int * operator=(Int *);
Object * Clone();
};
Int::Int(int n)
{
_n = n;
}
Int::Int()
{
_n = 0;
}
int Int::GetInteger()
{
return _n;
}
Int * Int::Get()
{
return (Int *)Clone();
}
Int * Int::operator=(Int *op2)
{
_n = op2->GetInteger();
return this;
}
Int * Int::operator=(int op2)
{
_n = op2;
return this;
}
Object * Int::Clone()
{
Int *copy = new Int();
copy = this;
return copy;
}
la classe object si limita ad esporre Clone come funzione virtuale
Allora il mio problema sono i due operator=
Visual studio 08 non mi segnala nessun errore ma se provo a fare:
Int *n = new Int();
n = 10;
cout<<n->GetInteger();
mi viene segnalato che è impossibile convertire int in Int *, cosa che non dovrebbe succedere visto che c'é l'operator=(int)
sbaglio forse qualcosa?(domanda ovvia e stupida dato che non funziona)
ps: non ho messo i tag code dato che modificavano Int in int e così non si capiva niente
Ultima modifica effettuata da lorenzo 08/05/09 10:40
aaa