Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VC++ struct

Delrauch [03.08.2004 13:36:20]

#

Mitenköhän saisi luotua structin jonka sisässä olis n verran structuureja?

Koodiesimerkki olis poikaa...

Metabolix [03.08.2004 14:00:39]

#

Mitä tarkoitat? Niitä struktuureja pitää olla tietty määrä.

struct S1
{
  struct S2
  {
    int x, y;
  } V1, V2, V3, VN;
};

Jos haluat jonkin, johon voi aina lisätä enemmän ja enemmän, käytä luokkia ja linkitettyä listaa:

class Muuttuja
{
public:
  // Tämä osoittaa listan seuraavaan Muuttujaan.
  Muuttuja *Seuraava;
};
class OmaLuokka
{
private:
  Muuttuja *Muuttujat;
public:
  // Hakee muuttujan. Uusin muuttuja on aina no. 1:
  Muuttuja *HaeMuuttuja(int N)
  {
    Muuttuja *Vastaus = Muuttujat;
    for (; N > 1; N--) Vastaus = Vastaus->Seuraava;
    return Vastaus;
  };

  // Lisää muuttujan. Uusi muuttuja on aina no. 1:
  void LisaaMuuttuja()
  {
    Muuttuja *V = new Muuttuja();
    V->Next = Muuttujat;
    Muuttujat = V;
  }
};

Tuohon tarvitsee vielä constructorit ja destructorit, mutta idea on kai selvä?

Delrauch [03.08.2004 14:26:00]

#

Nii ku mun tarttis tehä sellane asiakasrekisteri, joka olis tällänen:

Myyjä."Myyjän nimi".Tunnus
                   .Osoite
                   .jne...

Ja noit "Myyjän nimi", juttui on n kappaletta
Et mitenkähän tollasen structin vois alustaa?

Metabolix [03.08.2004 15:20:42]

#

Ei ole mahdollista tehdä structia, jossa on vaihteleva määrä jäseniä. Luokka on ainut järkevä vaihtoehto (mikäli et välttämättä halua leikkiä osoittimilla structien sisällä, mitä en suosittelisi).

thefox [03.08.2004 15:48:40]

#

Käytätkö C:tä vai C++:aa? Jos C:tä niin väännä vain tuollainen Myyjä-strukti ja sitten virittele joku dynaamisesti laajentuva Myyjä-taulukko. Jos myyjiä on tunnettu määrä niin mitään laajentumista ei tietenkään tarvita.

C++:lla ehkä luokilla pääsee helpomalla, ja varsinkin STL:n tarjoamilla systeemeillä.

Delrauch [04.08.2004 08:19:15]

#

Juu toteutin ton koko jutun vähän toisella tavalla ja nytte homma toimii. Että kiitoksia kuitenkin

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta