Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » objektübergabe per referenz

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
31.03.2005, 10:34 Uhr
~kundesbanzler
Gast


hallo leute

ich habe eine main-klasse, worin sich eine methode namens OnPhraseFinish befindet. darüber hinaus habe ich eine zweite klasse namens events, die ich durch include der main-klasse hinzufüge.

ich möchte nun der klasse events die main-klasse durch eine referenz übergeben, damit eine methode in events OnPhraseFinish in der main-klasse aufrufen kann.

das problem ist, dass ich in der klasse events die main-klasse nicht includieren kann und dadurch die klasse events die klasse main nicht kennt.

habt ihr vielleicht einen lösungsansatz?

gruß die 3 lustigen 2
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.03.2005, 11:24 Uhr
Th



Mittels Deklaration des Namens (ohne #include).

events.h:

C++:
class Main; // <- dies ist der Trick !!!

class Events
{
public:
    events(Main &main)
      : m_main(main)
    {}

    void DoIt();

private:
   Main &m_main;
}



events.cpp

C++:
#include "main.h"  // nun wird die Klassendeklaration benötigt

void Events::DoIt()
{
    m_main.OnPhraseFinish( /*...*/ ); // evtl. noch mit Parametern, z.B. this
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.03.2005, 13:04 Uhr
~kundesbanzler
Gast


erstmal danke für die antwort.

sollte es bei der klassendeklaration nicht "events.h" heißen?

und kannst du uns folgenden teil kurz erklären?


C++:
events(Main &main)
      : m_main(main)




an der stelle meckert der compiler nämlich herum.

'main': nichtdeklarierter Bezeichner

sonst sind auch noch einige andere fehler aufgetaucht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.03.2005, 14:00 Uhr
Th



Sorry, hab mich verschrieben:


C++:
class Events
{
public:
    Events(Main &main)
      : m_main(main)
    {}

    void DoIt();

private:
   Main &m_main;
}


Name der Klasse und des Konstruktors muß natürlich übereinstimmen...

Wenn deine Klasse "Main" anders heißt, mußt du den Source entsprechend ändern.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.03.2005, 14:10 Uhr
typecast
aka loddab
(Operator)


Is eigentlich ein ANSI-Problem ->
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.03.2005, 14:33 Uhr
0xdeadbeef
Gott
(Operator)


So gehts:

C++:
#include <iostream>

class foo;

class bar {
public:
  bar(foo &);

  void baz();

private:
  foo &qux;
};

class foo {
public:
  void quux() const;
};

bar::bar(foo &quuux) : qux(quuux) { }
void bar::baz() {
  qux.quux();
}

void foo::quux() const {
  std::cout << "Hello, World!" << std::endl;
}

int main() {
  foo xyzzy;
  bar(xyzzy).baz();
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
31.03.2005, 14:47 Uhr
Th



0xdeadbeef, deine Variablen sind nicht gerade aussagefähig und gut zu unterscheiden..., aber ansonsten ist der Code genau das, was ich auch geschrieben hab.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
31.03.2005, 14:48 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


oder man schaut in nem buch unter "forward declaration" nach
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
31.03.2005, 14:50 Uhr
0xdeadbeef
Gott
(Operator)



Zitat von Th:
0xdeadbeef, deine Variablen sind nicht gerade aussagefähig und gut zu unterscheiden..., aber ansonsten ist der Code genau das, was ich auch geschrieben hab.

Sei froh, dann ist das, was du geschrieben hast, richtig.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
31.03.2005, 15:29 Uhr
Th



OK, das wollte ich ja nur wissen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: