Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

31

03.04.2011, 22:33

Das möchte ich aber nicht, da das da nicht reingehört? Das Template soll doch nicht für das Vergleichen von einzelnen Datentypen verantwortlich sein.

@Architekt: Das Template an sich soll nichts mit dem Typen zu tun haben, sondern einfach nur definieren, welche Eigenschaften ein Typ haben muss:

C-/C++-Quelltext

1
2
class Stack st where
     push :: (Eq a) => st a -> a -> st a


Eq a definiert praktisch, dass a Instanz von Equal sein muss.

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

32

03.04.2011, 22:43

Wenn deine Templatefunktion / Funktion innerhalb der Templateklasse einfach den Operator == aufruft, dann führt das zu einem Compilerfehler wenn es den nicht gibt... (Das selbe gilt für jede andere Eigenschaft des Datentyps auch)
Was will man mehr?! Irgendwelche anderen "Sicherstellungen" seitens des Programmierers hätten doch auch nur Compilerfehler zu Folge...
Signaturen werden überbewertet

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

33

03.04.2011, 22:46

Das ist inkonsistent. Das war vielleicht nicht das beste Beispiel, aber insgesamt kann ich nicht bestimmte Eigenschaften vom T festlegen.

idontknow

unregistriert

34

03.04.2011, 22:46

Ich kann das auch nicht nachvollziehen, wie GR-PA schon gesagt hat: wenn ein Typ bestimmte Funktionalitäten nicht implementiert, dann gibts einen Compiler Fehler wie wohl bei jeder anderen Sprache auch!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

35

03.04.2011, 22:48

Da concepts leider noch nicht mit C++0x kommen gibts in C++ im Moment kein Sprachmittel das es einem erlaubt solche Requirements explizit auszudrücken. Allerdings sind die natürlich implizit immer gegeben. Sobald du in einem Template den == operator im Kontext mit einem Typargument verwendest drückst du damit ja bereits aus dass der übergebene Typ einen entsprechenden == operator unterstützen muss...

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

36

03.04.2011, 22:51

Wie gesagt, Equal war vielleicht ein schlechtes Beispiel. C++ ist vielleicht auch einfach zu wenig abstrakt.

btw: "We didn't start the flame war..." :P

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

37

03.04.2011, 22:51

Das ist inkonsistent. Das war vielleicht nicht das beste Beispiel, aber insgesamt kann ich nicht bestimmte Eigenschaften vom T festlegen.

Doch, wie gesagt tust du das ja bereits implizit. Und warum sollte man ein Template auf nur ein kleines Set von Typen beschränken wollen!? Wenn man das will dann will man doch von vorn herein eigentlich keine generische Programmierung. Abgesehen davon kann man sich natürlich was entsprechendes basteln siehe z.B. die boost concept checking library...

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

38

03.04.2011, 22:57

Warum ich ein Template beschränken will? Weil ich eventuell Funktionen habe, die nur mit Typen funktionieren, die bestimmte Eigenschaften haben? Oo Implizit kann ich sie nicht komplett festlegen, da bestimmte Eigenschaften sich in bestimmten Fällen anders verhalten als gedacht.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

39

03.04.2011, 22:59

Dann kompilieren sie auch automatisch nur mit solchen Typen. Und im Zweifelsfall ist C++ so mächtig dass man sich was basteln kann auch wenns nicht direkt ein Sprachmittel dafür gibt...

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

40

03.04.2011, 23:05

Nein, das war anders gemeint. Egal. http://harmful.cat-v.org/software/c++/linus Letztendlich ist das Gesamtbild wichtig.

Werbeanzeige