Neues Problem. Ich hoffe das darf noch in diesen Thread.
Und zwar:
Ich möchte ein Objekt A in eine Liste "Liste für Objekte A" einfügen, allerdings gibt es auch noch Objekt B, C, ... usw. die ich in die
richtige Liste hinzufügen möchte. Der Quelltext dazu:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
std::list<A> objectAList;
std::list<B> objectBList;
std::list<C> objectCList;
// ...
template <class T>
void add(T &templateObject)
{
if(typeid(templateObject) == typeid(A)) objectAList.push_back(templateObject);
if(typeid(templateObject) == typeid(B)) objectBList.push_back(templateObject);
if(typeid(templateObject) == typeid(C)) objectCList.push_back(templateObject);
// ...
}
|
Wahrscheinlich kann sich der ein oder andere schon denken was für ein Problem ich habe... "falscher Datentyp angegeben"...
.. Leider, wird nun mal schon beim Kompilieren überprüft ob das eingesetzte Objekt in die Liste rein darf oder nicht... und leider ignoriert der Compiler
natürlich die abfragen (logisch) und möchte mich am liebsten steinigen, weil ich nun mal angeblich unbedingt Objekte mit einem Datentyp in
Listen einfügen möchte, die nicht für diesen Datentyp ausgelegt sind...
Er reagiert halt nach dem Motto, als wenn ich z.B zwei String Objekte einer Funktion mit der Parameter Liste (float, float) übergeben möchte.
So und jetzt stehe ich nun mal (so wie oft) gerade auf einem Schlauch, mir fällt echt nichts dazu ein... Scheint wohl auch ne Design schwäche zu sein, richtig?
Ich wäre enorm dankbar, wenn mir dabei jemand helfen könnte. Ein Denkanstoß würde schon genügen.
@Rmbrt, ich hab ja nicht umsonst Templates verwendet, ich wollte es umgehen unmengen von überladenen Funktionen zu erstellen...
Und ersteren Code verstehe ich nicht so ganz, allerdings ist das auch nicht mehr das größte Problem, da ich diesen Teil schon hin bekommen habe... Danke trotzdem dafür.