Avatar billede linuxchristian Nybegynder
15. oktober 2005 - 13:06 Der er 14 kommentarer

Dynamisk Skabelse af objects.

Jeg har brug for at mit program selv kan skabe de obejcts den skal bruge. Mit problem er som følger:
Når programmet starter indtaster brugeren et tal. Programmet skal så skabe det antal objectssom brugeren har indtasted (Navnet på de objekterne der bliver skabt er lige meget.)

Mit problem er at jeg ikke kan få min kode til at virke, den skal igennemet et loop skabe de nødventige objects som bare kan hedde object1, object2...

Jeg havde tænkt at koden skulle se ca. sådan her ud:
for(int i=0;i>=IndtastedTal;i++)
{
  ClassNavn ObejctNavn[i];
}

Hvor i tages fra loopet så mine objects kommer til at hedde object1, object2..., når jeg prøver at køre siger min kompiler: "variable-sized object `Terning' may not be initialized".
Avatar billede driis Nybegynder
15. oktober 2005 - 13:13 #1
ClassNavn ObjectNavn[] = new ClassNavn[IndtastedTal];
for(int i=0;i>=IndtastedTal;i++)
{
  ObejctNavn[i] = new ClassNavn();
}

Husk at delete det du har new'et.
Avatar billede bertelbrander Praktikant
15. oktober 2005 - 13:29 #2
#include <iostream>
class ClassNavn
{
public:
  int z;
};
int main()
{
  int IndtastedTal = 11;

  ClassNavn *ObjectNavn = new ClassNavn[IndtastedTal];
  ObjectNavn[0].z = 11;
  ObjectNavn[10].z = 21;
  std::cout << ObjectNavn[0].z << std::endl;
  std::cout << ObjectNavn[10].z << std::endl;
  delete [] ObjectNavn;
}
Avatar billede linuxchristian Nybegynder
15. oktober 2005 - 13:29 #3
initializer fails to determine size of `ObjectNavn'
Avatar billede bertelbrander Praktikant
15. oktober 2005 - 13:35 #4
Var det en kommentar til min eller driis kode?
Avatar billede linuxchristian Nybegynder
15. oktober 2005 - 13:38 #5
Det var en compiler fejl til driis kode, men har løst den...jeg får dog denne fejl ved din kode "invalid suffix "TerningTal" on floating constant "
Avatar billede linuxchristian Nybegynder
15. oktober 2005 - 13:38 #6
terningtal er den som du kalder int z
Avatar billede bertelbrander Praktikant
15. oktober 2005 - 13:40 #7
Må jeg se lidt kode, hvilken linie får du den fejl i?
Avatar billede linuxchristian Nybegynder
15. oktober 2005 - 13:40 #8
Her fået det til at virke nu..tak for hjælpen din kode gav mig mest hjælp så du må gerne få de 30 points
Avatar billede bertelbrander Praktikant
15. oktober 2005 - 13:42 #9
Jeg samler ikke på point.

(Jeg tror at driis havde glemt at det er C++ og ikke C# (eller java?))
Avatar billede linuxchristian Nybegynder
15. oktober 2005 - 13:48 #10
kan du ikke hjælpe mig med en underlig fejl som jeg får? min kode ser sådan nu:
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

class TerningClass
{
public:     
      string TerningTal;
private:

};

int main()

    int TerningAntal=4;
   
    TerningClass *Terning = new TerningClass[TerningAntal];
    Terning[0].TerningTal = "23456";
    Terning[10].TerningTal = "89234";
    cout << Terning[0].TerningTal << endl;
    cout << Terning[10].TerningTal << endl;
    delete [] Terning;
   
    system("PAUSE");
    return 0;
}

min kompiler siger:
  multiple definition of `main'
  first defined here
  ld returned 1 exit status
C:\Dev-Cpp\projects\DDD\Terning\Makefile.win [Build Error]  [Terning.exe] Error 1
Avatar billede bertelbrander Praktikant
15. oktober 2005 - 14:36 #11
Mystisk fejl! Så vidt jeg kan se har du kun én main i den kode du har vist.
Har du en main i en anden fil som du har inkluderet i projectet?
Hvis du dobbelt klikker på de linier hvor den skriver "multiple definition of `main'" og "first defined here" hopper den så mellem to main()?

Du kan evt prøve at omdøbe denne main til MyMain, og se om det så kompilerer
Avatar billede linuxchristian Nybegynder
15. oktober 2005 - 15:16 #12
Jeg havde tilføjet en fil til mit project med den kode du havde givet mig...havde fjernet den igen, men min editor skulle lige genstartes for at kunne finde ud af det.
Avatar billede linuxchristian Nybegynder
15. oktober 2005 - 17:35 #13
Kom til at tænke på: Hvis jeg sætter IndtastedTal til 3. hvor mange obejkter opretter den så? 0,1,2,3 eller 1,2,3 eller 0,1,2 ???
Avatar billede bertelbrander Praktikant
15. oktober 2005 - 20:02 #14
Hvis du indtaster 3 har du tre elementer, 0,1,2.

I C starter arrays altid med 0, og slutter på n-1.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester