Avatar billede scorp-d Nybegynder
04. december 2008 - 16:44 Der er 5 kommentarer

Videregiv reference af klasse til constructor

Hey.

Jeg har 3 cpp filer; driver, class_A og class_B.
Menigen er at driver opretter en instans af class_A, som så opretter en instans af class_B.

Jeg vil så gerne kunne kalde en metode i class_A fra class_B, og det er så der problemet opstår.

Ved nedenstående kode får jeg følgende fejl:
class_B(class_A *ca): Type name expected
class_B(class_A *ca): Declaration missing ;
class_B's constructor: ) expected
class_B's constructor: Declaration terminated incorrectly
class_B's constructor: Unexpected }
class_B's constructor: Unexpected }
class_A : Cannot cast from ' class_A * const' to ' class_B' in function class_A:: class_A (bool)

Kan ikke lige se fejlen i den, men det må være noget med includes, for har lignende kode bare i én fil og det fungere udmærket. Hvis jeg tilføjer #include ”class_a.cpp” i class_B får jeg følgende fejl:

Multiple declaration for ‘class_a’
Earlier declaration of ' class_a’

På forhånd tak.
Scorp-D


------------ driver.cpp --------------
#include "class_A.cpp"
int main()
{
    new class_A();
}

------------ class_A.cpp --------------
#include "class_B.cpp”
using namespace std;
class class_A
{
  public:
          bool Shutdown;
      class_A(bool inShutdown = false) :Shutdown(inShutdown)
          {
          class_B cb = class_B(this);
          }
};

------------ class_B.cpp --------------
using namespace std;
class class_B
{
    public:
            class_A *ca;
        class_B(const class_A & inCA) : ca (inCA){}
};
Avatar billede arne_v Ekspert
04. december 2008 - 16:48 #1
Du har nok brug for en forward erklaering.
Avatar billede arne_v Ekspert
04. december 2008 - 16:49 #2
Og saa boer man ikke include .cpp men kun .h filer.
Avatar billede arne_v Ekspert
04. december 2008 - 16:50 #3
Avatar billede scorp-d Nybegynder
04. december 2008 - 22:43 #4
Jeg kan godt se at det er således at problemet skal løses, men har bare meget svært ved at se hvordan det helt præcis hænger sammen, når man er vant til java/.NET

Hvad skulle del reelt set minimum gøres ved eksemplet ovenover for at jeg kunnu tilgå en metode i objektet A fra B, når A har oprettede B.
Avatar billede arne_v Ekspert
04. december 2008 - 22:46 #5
Java/C# er anderledes end C/C++/Pascal. I Java/C# er raekkefoelgen af erklaeringer
(naesten) ligegyldig. I C/C++/Pascal skal noget vaere erklaeret ovenover hvor det bruges.
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