|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2005
Messaggi: 80
|
[visual c++] operatore new e costruttori con argomenti
Salve
sto scrivendo una applicazione, in cui devo creare un array di oggetti della classe DGeneric passando come argomento un intero Parameter. La sintassi dovrebbe essere: Codice:
DGeneric* Generic; Generic = new DGeneric[10](Parameter); Come posso ovviare al problema? Grazie ADL |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Apr 2011
Messaggi: 59
|
Prova così:
Codice:
DGeneric* Generic[10];
int i;
for( i=0; i<10; i++ )
Generic[i] = new DGeneric( i );
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Sep 2005
Messaggi: 80
|
Sorry,
nel tentativo di semplificare la lettura, mi sono reso conto di essere stato troppo generico nella descrizione del problema. Il listato corretto è: Codice:
class DFool
{
public:
...
DFool(int i,DArgument Argument);
private:
DGeneric* Generic;
...
}
...
DFool::DFool(int i,DArgument Argument)
{
...
Generic = new DGeneric[i](Argument);
...
}
Come posso ovviare al problema?ADL |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Abbastanza semplicemente così:
Codice:
class DFool
{
public:
...
DFool(int i,DArgument Argument);
private:
DGeneric* Generic;
...
}
...
DFool::DFool(int i,DArgument Argument)
{
Generic = new Generic[i];
for (int j = 0; j < i; j++)
Generic[i] = new DGeneric(Argument);
...
}
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Sep 2005
Messaggi: 80
|
Ok, ho provato:
Codice:
Volee=new DVolee[GetSessionVolee()]; for(int i=0;i<GetSessionVolee();i++)Volee[i]=new DVolee(GetVoleeShoots()); Codice:
1> error C2679: '=' binario: non è stato trovato alcun operatore che accetti un operando destro di tipo 'Project_Amaltea::DVolee *'. È anche possibile che non vi siano conversioni accettabili. 1> c:\users\antonio\documents\visual studio 2008\project_amaltea\project_amaltea\DVolee.h(16): potrebbe essere 'Project_Amaltea::DVolee &Project_Amaltea::DVolee::operator =(const Project_Amaltea::DVolee &)' 1> durante la ricerca di corrispondenza con l'elenco di argomenti '(Project_Amaltea::DVolee, Project_Amaltea::DVolee *)' Ultima modifica di dileoa : 10-05-2011 alle 20:21. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Scusami, nella fretta di rispondere mi sono dimenticato delle basi
Ovviamente Generic deve essere un array di puntatori a DGeneric Codice:
class DFool
{
public:
...
DFool(int i,DArgument Argument);
private:
DGeneric** Generic;
...
}
...
DFool::DFool(int i,DArgument Argument)
{
Generic = new DGeneric*[i];
for (int j = 0; j < i; j++)
Generic[i] = new DGeneric(Argument);
...
}
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Sep 2005
Messaggi: 80
|
Ho capito. Mi sembra una buona idea. L'unica cosa che così ho bisogno di due indici per puntare un singolo oggetto. Confermi?
Codice:
Generic[i][j].Fool(); |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:57.











Come posso ovviare al problema?









