Avatar billede al_dair Nybegynder
24. april 2003 - 12:06 Der er 10 kommentarer og
1 løsning

Fra Struct til Class...

God formiddag Eksperter..


Jeg har et system opbygget af struct, og har læst flere steder at klasser og structs er nærmest beslægtede, og forskellen ligger i datatilgængeligheden.. den har private som default, den anden public..

Men hvordan kan jeg omdanne et struct til klasse..
her er min forsimplet infrastruktur:


struct bestilling
        {
        public:
        int pris,dag,maaned,aar;
        };

struct indhold
      {
      public:
          int ID;
          char kundenavn[10];
          struct bestilling varer[50];
          };

struct indhold data[100]; // initialz...



Hvorefter jeg manipulere data efter ID sådan her..

data.kundenavn=xxxxxx
data.varer.pris=10000;

Det hele virker nu.. men kan det uden besvær omdannes til klasser.. vil så gerne :-O


takker på forhånd
Avatar billede soreno Praktikant
24. april 2003 - 12:09 #1
class bestilling
        {
        public:
        int pris,dag,maaned,aar;
        };

class indhold
      {
      public:
          int ID;
          char kundenavn[10];
          struct bestilling varer[50];
          };

indhold data[100];
data.kundenavn=xxxxxx
data.varer.pris=10000;
Avatar billede arne_v Ekspert
24. april 2003 - 12:09 #2
Med ovenstårende structs så burde konverteringen til
class bestå i at erstatte ordet "struct" med ordet "class".
Avatar billede soreno Praktikant
24. april 2003 - 12:10 #3
struct bestilling varer[50];

skal ændres til:
bestilling varer[50];
Avatar billede olennert Nybegynder
24. april 2003 - 16:42 #4
Hvis du i forvejen har eksplicitte access modifiers på (public, private, protected), så gør det faktisk ingen forskel på om det er en class eller en struct. Der er ingen forskel på

class A {
public: int i; };

og struct A {
public: int i; };

men derimod forskel mellem

class A {
int i; };

og struct A {
int i; };

Så: Hvorfor vil du lave dine structs om til classes?
Avatar billede al_dair Nybegynder
24. april 2003 - 20:04 #5
Der er ingen eksplicit grund til det, blot af nysgerrighed..

ved heller ikke hvorfor jeg skulle vælge den ene frem for den anden..
Avatar billede arne_v Ekspert
24. april 2003 - 20:09 #6
Man kunne måske opfatte den substitution som et symbols
første skridt på vejen mod noget objekt-orienteret eller
en indikation af at man planlægger at begynde at fylde
metoder på senere.
Avatar billede olennert Nybegynder
25. april 2003 - 17:50 #7
Jo, men du kan sagtens have metoder i en struct.

struct A {
private: int i;
public:
  int getI() const;
  int setI(const int i_);
};

Så der er intet vundet ved at skrive class i stedet for struct, den eneste forskel er default access modifier.
Avatar billede olennert Nybegynder
25. april 2003 - 17:54 #8
arne>> Undskyld, jeg overså lige at du skrev "symbolsk" i dit indlæg. Jeg er så måske ikke helt enig i at man skal udføre sådan en symbolsk handling. Jeg ville (personligt, et spørgsmål om præferencer) vælge at beholde structs, og så tilføje metoderne alligevel.
Avatar billede arne_v Ekspert
25. april 2003 - 18:28 #9
Det er muligt jeg er gammel-dags, men for mig er struct=data og
class=data+kode.

Og derfor vil jeg bruge struct/class til at indikere det.

Men det er min personlige smag.

[jeg tror iøvrigt at det kun er få måneder siden at en her på E
fortalte mig at man kune putte metoder i struct, hvilket chokerede
mig lidt]
Avatar billede arne_v Ekspert
10. maj 2003 - 00:09 #10
al_dair>

Tid at lukke spørgsmålet ?
Avatar billede al_dair Nybegynder
12. maj 2003 - 11:59 #11
Ja da..Sorry !

forbandet Eksamensskræk.. :-x
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