Avatar billede evilfish Nybegynder
16. september 2007 - 14:19 Der er 8 kommentarer og
1 løsning

Anvendelse and klasser (begynder)

En hurtigt en:

Jeg har lavet en klasse, som jeg gerne vil bruge i en anden fil. Hvorledes gør jeg det?

Det er noget med en header fil der skal laves, som jeg har (Aner ikek om den er korrekt), og så skal den inplementeres det sted jeg vil bruge den...  ik?
Avatar billede bertelbrander Novice
16. september 2007 - 14:28 #1
Den korte forklaring:

Du laver class'en i en .h fil, lad os kalde den myclass.h:
class MyClass
{
public:
  void Func();
};

Du implementerer så class'en i en .cpp fil, lad os kalde den myclass.cpp:
#include "myclass.h"
#include <iostream>
void MyClass::Func()
{
  std::cout "MyClass::Func" << std::endl;
}

Og så kan du bruge det fra en anden .cpp fil:

#include "myclass.h"

int main()
{
  MyClass Mine;
  Mine.Func();
}
Avatar billede evilfish Nybegynder
16. september 2007 - 14:41 #2
Skal klassen ikke instatieres i den anden fil?
Avatar billede evilfish Nybegynder
16. september 2007 - 15:34 #3
Okay - Det virker. Men hvordan laver jeg en construtor? Når jeg prøver for jeg en del fejl.
Avatar billede bertelbrander Novice
16. september 2007 - 17:04 #4
Du kan lave en default constructor, dvs. en constructor uden parametre.

Først i headerfilen:
class MyClass
{
public:
  MyClass();
  void Func();
};

Så i .cpp filen:

MyClass::MyClass()
{
  std::cout << "MyClass::MyClass" << std::end;
}

En constructor er "bare" en funktion som hedder det samme som classen og som ikke har nogen returværdi.
Avatar billede evilfish Nybegynder
16. september 2007 - 20:59 #5
svar please :D
Avatar billede bertelbrander Novice
17. september 2007 - 00:48 #6
Jeg samler ikke på point.
Avatar billede evilfish Nybegynder
17. september 2007 - 08:40 #7
ok - Så tager jeg dem igen.
Avatar billede jstampe Nybegynder
05. oktober 2007 - 15:14 #8
Jeg har lige et lille tillægsspørgsmål..:

Er det nødvendigt (og hvad er fordelene ved) at lave det med en header-fil.

Kan man ikke bare definere og implementere klassen i en enkelt .cpp-fil og så inkludere denne fil i den anden fil, hvor man vil benytte klassen.

Med ovenstående eksempel mener jeg:

myclass.cpp:

#include <iostream>

class MyClass
{
public:
  void Func();
};

void MyClass::Func()
{
  std::cout "MyClass::Func" << std::endl;
}

en-anden-fil.cpp

#include "myclass.cpp"

int main()
{
  MyClass Mine;
  Mine.Func();
}

??
Avatar billede bertelbrander Novice
05. oktober 2007 - 19:56 #9
Hvis MyClass kun bliver brugt af én .cpp fil, kan du godt gøre det på den måde, jeg ville dog vælge at kalde filen med MyClass for myclass.h
Hvis ikke koden til MyClass fylder ret meget ville jeg nok putte den direkte i den fil der bruger den.

Men, den metode virker ikke hvis MyClass på noget tidspunkt skal bruges af mere end én .cpp fil. Hvis du forsøger vil compileren (/linkeren) brokke sig over at MyClass::Func findes mere end et sted.
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