Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Namenskonflikte

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
07.02.2007, 00:57 Uhr
halber



Ich habe mal wieder ein nicht ganz triviales Problem. Ich habe zwei Klassen, die beide eine andere Klasse verwenden, die leider in zwei inkompatiblen Versionen existiert. Die liegen in zwei verschiedenen Verzeichnissen. Natürlich wird nirgends ein namespace verwenden und dadurch entstehen die üblich Problem, wenn man beide verwenden muss. Ich hatte jetzt die glorreiche Idee einfach etwas der folgenden Art zu machen:

C++:
namespace eins {
#include “Klasse1.h“
}
namespace zwei {
#include “Klasse2.h“
}

using eins::Klasse1;
using zwei::Klasse2;


soweit so gut nur bekomme ich jetzt immer den Fehler:

Code:
undefined reference to `eins::Klasse1::Klasse1()`
usw... Für alle Methoden der Klasse halt.


wenn ich versuche ein Object der Klasse anzulegen. Die einzigste Lösung die ich bisher habe ist, dass ich einfach hergehe und in den entsprechenden namespace die zugehörige .cpp Datei includiere. z.B.

C++:
namespace eins {
#include “Klasse1.h“
#include “Klasse1.cpp“
}


Das finde ich nicht besonders schön. (Von dem restlichem Misst mal ganz abgesehen. Nur kann ich daran nichts ändern.)
Meine Frage ist jetzt, wäre das denn in Ordnung, wenn man .h und .cpp Datei includiert bzw. hat das irgendwelche unschönen Folgen? Oder weiß jemand eine Bessere Lösung für dieses Problem.
Ich hoffe mal ich war verständlich. Bedanke mich jedenfalls schon mal für Hilfreiche antworten.
--
Ich bin faul und mein Computer ist schnell!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.02.2007, 08:40 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du musst das namespace eins {} bzw zwei natürlich in der jeweiligen cpp um die Klassenelemente rummachen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.02.2007, 09:23 Uhr
halber



Und das ist genau das was ich nicht machen kann. Ich kann die Dateien nicht verändern. OK, ich könnte von den Klassen 1 und 2 erben und dort den namespace um die Klassenelemente machen. Muss das mal ausprobieren.
--
Ich bin faul und mein Computer ist schnell!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.02.2007, 09:33 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


warum darfst oder kannst du die nicht verändern? wenn die in einer library sind, dann hat die library fehlerhaft designed, wenn nicht - wo liegt dann das problem?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.02.2007, 12:29 Uhr
halber



Ja die lib ist ziemlich mies designed. Ich habe mir jetzt einfach zwei shared objects gebaut und arbeite mit denen.
--
Ich bin faul und mein Computer ist schnell!
 
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: