Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Klasse die array einer anderen Klasse als Membervariable enthält

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.07.2006, 17:32 Uhr
tobsen666



Hallo!

Ich habe jetzt seit mehrenen Tagen gegoogelt und keine befriedingende Antwort gefunden.
Mein Problem ist das folgende:

Ich habe eine Klasse "population" die einen array der Klasse "chromosome" als Membervariable enthält:


C++:
class chromosome {
         vector<bool> string;
         int lengthOfChromosome;
         .
         //constructor
         chromosome (int length);
         .
         .
}





C++:
class population {
         chromosome* individuals;
         .
         .
         .
}



Die Länge dieses arrays (SIZE) soll dem Konstruktor der "population"-Klasse zusammen mit einem Integer für die Länge der Objekte der Klasse "chromosome" als Argument übergeben
werden.


C++:
population::population (int NumOfChromosomes, int lengthOfChromosomes) ;



Die Frage ist nun, wie rufe ich innerhalb des "population"-Konstruktors den den obigen "chromosome"-Konstruktor MIT Argument auf.

OHNE geht es laut Bjarne Stroustrup mit


C++:
individuals = new chromosome[ SIZE ];



damit wird nämlich der default-Konstruktor von chomosome aufgerufen.

Wie es MIT Argumenten geht steht selbst in diesem Buch nicht drin. Ich bin wirklich verzweifelt!!!

Bitte helft mir!


Bearbeitung von Pler:

code-Tags eingefügt.


Dieser Post wurde am 03.07.2006 um 18:29 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.07.2006, 18:30 Uhr
Pler
Einer von Vielen
(Operator)


Sieht bis jetzt nicht sehr *nix-spezifisch aus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.07.2006, 19:14 Uhr
Tommix



Hallo,
wenn ich nichts verpaßt habe, geht das was Du willst nicht:

Zitat von MSDN:

new : Angabe der Initialisierung für Felder nicht möglich

Für das mit dem Operator new angelegte Feld wurde eine Initialisierung übergeben.

Der Operator new erstellt Felder von Objekten, indem er den Standardkonstruktor für jedes Element des Feldes aufruft. Die Initialisierung der Elemente mit unterschiedlichen Werten ist nicht möglich



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.07.2006, 19:53 Uhr
stephanw
localhorst


Ich würde die Chromosomen nicht in einem nativen C-Array verwalten. Dafür gibt es std::vector .


C++:
class Population
{
  std::vector<Chromosome> individuals;
  
public:

  Population( std::size_t number, std::size_t length )
  {
     individuals.reserve( number );
     for (std::size_t i=0; i<number; ++i)
     {
       individuals.push_back( Chromosome( i ) ); // der Längen- Konstruktor mit individuellem Arguement
     }
  }
};



oder

C++:
class Population
{
  std::vector<Chromosome> individuals;
  
public:

  Population( std::size_t number, std::size_t length )
  : individuals( number, Chromosome( length ) ) // number Kopien des einen Chromosoms
  {
  }
};






Noch ein Tipp: um Verwirrung (und Compilerfehler) zu vermeiden, würde ich den vector<bool> in Chromosome nicht "string" nennen. "string" ist eine String-Klasse im namespace std, eine Variable so zu nennen geht nur so lange gut, bis Du den <string>-header einbindest.
--
Reden ist Schweigen und Silber ist Gold.

Dieser Post wurde am 03.07.2006 um 20:00 Uhr von stephanw editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.07.2006, 20:03 Uhr
Pler
Einer von Vielen
(Operator)


@stephanw:
Klasse!
Geht so einfach. Ich bin auch nicht drauf gekommen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.07.2006, 11:04 Uhr
tobsen666



Ja Super. So geht's!!!!!
Vielen vielen DANK!!!!!!!!!!!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: