Avatar billede Slettet bruger
09. november 2005 - 14:02 Der er 16 kommentarer og
1 løsning

2 filer som samarbejder

Hej,

Kan i komme med et simpelt eksempel hvor 2 cpp filer samarbejder... dvs den ene fil anvender funktioner fra den anden fil....
Avatar billede arne_v Ekspert
09. november 2005 - 14:05 #1
a.h erklærer funktioner/klasser i a.cpp

b.cpp inkluderer a.h og bruger funktioner/klasser fra a

das ganze molevitten bygges sammen
Avatar billede jpk Nybegynder
09. november 2005 - 14:06 #2
Det er ikke særlig pænt at inkludere én cpp-fil i en anden.
Man gør det typisk ved at inkludere h-filen for en klasse:

//a.h
class A
{
...
};


//a.cpp
A::A()
{
}


//b.cpp
#include "a.h"
Avatar billede Slettet bruger
09. november 2005 - 14:14 #3
kan i lave teksten inde i filerne også... bare mumba hurtigt..
Avatar billede jpk Nybegynder
09. november 2005 - 14:16 #4
//a.h
class A
{
A();
void func();
};


//a.cpp
A::A()
{
}

void A:func()
{
// gør noget...
}

//b.cpp
#include "a.h"

int main()
{
A a;
a.func();
}
Avatar billede Slettet bruger
09. november 2005 - 14:21 #5
Jeg får disse fejl

b.cpp
.\b.cpp(5) : error C2248: 'A::A' : cannot access private member declared in class 'A'
        c:\documents and settings\ps\dokumenter\visual studio 2005\projects\test\test\a.h(3) : see declaration of 'A::A'
        c:\documents and settings\ps\dokumenter\visual studio 2005\projects\test\test\a.h(2) : see declaration of 'A'
.\b.cpp(6) : error C2248: 'A::func' : cannot access private member declared in class 'A'
        c:\documents and settings\ps\dokumenter\visual studio 2005\projects\test\test\a.h(4) : see declaration of 'A::func'
        c:\documents and settings\ps\dokumenter\visual studio 2005\projects\test\test\a.h(2) : see declaration of 'A'
a.cpp
.\a.cpp(1) : error C2653: 'A' : is not a class or namespace name
.\a.cpp(2) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
.\a.cpp(3) : warning C4508: 'A' : function should return a value; 'void' return type assumed
.\a.cpp(5) : error C2470: 'A' : looks like a function definition, but there is no parameter list; skipping apparent body
Avatar billede jpk Nybegynder
09. november 2005 - 14:23 #6
//a.h
class A
{
public:
A();
void func();
};
Avatar billede Slettet bruger
09. november 2005 - 14:26 #7
.\a.cpp(1) : error C2653: 'A' : is not a class or namespace name
.\a.cpp(2) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
.\a.cpp(3) : warning C4508: 'A' : function should return a value; 'void' return type assumed
.\a.cpp(5) : error C2470: 'A' : looks like a function definition, but there is no parameter list; skipping apparent body
Avatar billede jpk Nybegynder
09. november 2005 - 14:30 #8
mkay, a.cpp skal self også include a.h...
Avatar billede Slettet bruger
09. november 2005 - 14:58 #9
Så kommer den bare op med:
.\a.cpp(8) : error C2470: 'A' : looks like a function definition, but there is no parameter list; skipping apparent body
Avatar billede jpk Nybegynder
09. november 2005 - 15:11 #10
Denne gang var det en slå-fejl, der skal være 2 stk. ':'

void A::func()
Avatar billede Slettet bruger
09. november 2005 - 15:32 #11
jeg har rodet lidt i filerne.... jeg ville jo mene at der ville komme 3 tekster op på skærmen "kald foretages", "Tallet er" samt "kald foretaget". Men der kommer kun de 2 tekststrenge med "kald foretages" og "kald foretaget"... hvad er gået galt for mig?

a.h
class A
{
public:
A();
void func(int i);
};



a.cpp
#include "a.h"
#include "iostream"
using namespace std;

A::A()
{
}

void A::func(int j)
{
    cout<<"Tallet er: " + j;
}


b.cpp
#include "a.h"
#include "iostream"
using namespace std;

int main()
{
    A a;
    cout<<"kald på a.func foretages";
    a.func(10);
    cout<<"kald på a.func afsluttet";
}
Avatar billede jpk Nybegynder
09. november 2005 - 15:51 #12
Det du skriver til cout er typisk buffered, derfor er det en god idé at bruge endl hvis du vil være sikker på det kommer ud med det samme.

cout << "Tallet er: " + j << endl;
Avatar billede jpk Nybegynder
09. november 2005 - 15:55 #13
cout << "Tallet er: " << j << endl;
Avatar billede Slettet bruger
09. november 2005 - 15:55 #14
okay :o)

men når jeg i b.cpp kalder a.func(10) hvorfor kommer der så ikke til at stå "Tallet er 10"? Denne streng kommer aldrig ud på skærmen... det er som om den slet ikke kaldes!
Avatar billede Slettet bruger
09. november 2005 - 15:56 #15
Thanks..... NU virker den :)
Avatar billede jpk Nybegynder
09. november 2005 - 15:56 #16
se min sidste post.
Avatar billede bertelbrander Novice
09. november 2005 - 19:29 #17
På samme måde som:
std::cout << 4 + 5 << std::endl;
Ikke udkriver 4 + 5 men 9
Vil:
std::cout << "Hello" + 2 << std::endl;
Ikke udkrive Hello 2 men llo
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