Avatar billede bajads Nybegynder
01. oktober 2002 - 22:45 Der er 4 kommentarer og
1 løsning

Et begynder eksempel med klasser

Jeg har virkelig problemer med, mit C++ !! - jeg skal lave et program der indeholder klasser. Prog. skal lave noget udregning paa et laan med rente og afdrag osv. Og derfor skal alle disse i "klasser" !! Jeg er tvivl om "headerne" og hvilke void der skal bruges.
Jeg læser "Compuer Science" i Reykjavík saa det kan være lidt svært at fölge lærenes eksempler !!
Jeg haaber paa lidt hjælp fra alle jer bag skærmen.

Eksil danskeren
Avatar billede bajads Nybegynder
01. oktober 2002 - 22:49 #1
Gerne med kommentar !!!
Avatar billede soreno Praktikant
01. oktober 2002 - 23:03 #2
håber du kan finde lidt inspiration i dette lille eksempel:

----------------main.cpp
#include <stdio.h>
#include "MyClass.h"

int main(int argc, char **argv)
{
  //objekt af MyClass oprettet som pointer til objekt
  MyClass *x = new MyClass();
  x->setValue(12345);
  printf("Value af x er %i\n", x->getValue());
  delete x;

  //objekt af MyClass oprettet som objekt
  MyClass y;
  y.setValue(54321);
  printf("Value af y er %i\n", y.getValue());

  return 0;
}

----------------MyClass.cpp
#include <stdio.h>
#include "MyClass.h"

//konstruktør
MyClass::MyClass()
{
  printf("Du har nu oprettet et objekt af MyClass\n");
}

//destruktør
MyClass::~MyClass()
{
  printf("Du har nu nedlagt et objekt af MyClass\n");
}

void MyClass::setValue(int value)
{
  this->value = value;
}

int MyClass::getValue()
{
  return this->value;
}

----------------MyClass.h
//sikre at der ikke opstår loops i include statements
#ifndef MyClass_H
#define MyClass_H

class MyClass
{
  public:
  MyClass(); //kontruktør
  ~MyClass(); //destruktør
  void setValue(int value);
  int getValue();

  private:
  int value;
};

#endif
Avatar billede bajads Nybegynder
01. oktober 2002 - 23:08 #3
Det hjalp meget, men jeg blev bare lidt mere forvirret af konstruktörer og destruktör .....men klasserne forstod jeg !! TAK !
Avatar billede soreno Praktikant
02. oktober 2002 - 07:23 #4
når du opretter et objekt (MyClass minklasse) så kalde konstruktøren i MyClass - det giver mulighed for programmøren af klassen at udføre noget initialisering af forskellige ting (eks. datamembers, dynamisk oprettelse af objekter med "new" osv)

Når objektet nedlægges, enten via delete myclass eller ved at klassen gå ud af scope, så kaldes destruktøren - det giver mulighed for at deinitialisere det som nu er blevet initialiseret i konstruktøren, eks. delete af objekter oprettet med "new" osv)

Når du kommer videre i dit forløb vil du støde på copy constructor og assignment operator som er lidt i samme boldgade som konstruktører - spørg når du kommer så langt :-)
Avatar billede jakobdo Ekspert
05. august 2003 - 10:26 #5
Hej Soreno,
jeg har lige testet dit lille eksempel, helt uden modificationer...

Når jeg kompilere med BCC32, får jeg følgende:

C:\soreno>bcc32 main.cpp
Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland
main.cpp:
Warning W8057 main.cpp 18: Parameter 'argc' is never used in function main(int,char * *)
Warning W8057 main.cpp 18: Parameter 'argv' is never used in function main(int,char * *)
Turbo Incremental Link 5.60 Copyright (c) 1997-2002 Borland
Error: Unresolved external 'MyClass::~MyClass()' referenced from C:\main.OBJ
Error: Unresolved external 'MyClass::MyClass()' referenced from C:\main.OBJ
Error: Unresolved external 'MyClass::setValue(int)' referenced from C:\main.OBJ
Error: Unresolved external 'MyClass::getValue()' referenced from C:\main.OBJ

Hvorfor nu det?

Min kode er 100% rip-off fra Soreno lige oven over..
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