JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=076e354d2e9904cbd17cc6ae258e7ff2Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Kann man Funktionen mit typedef Typen überladen?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 00:19    Titel: Kann man Funktionen mit typedef Typen überladen? Antworten mit Zitat

CPP:
typedef int Typ1;
typedef int Typ2;

int Funktion(Typ1 Var);
int Funktion(Typ2 Var);


Kanns sein das das net geht? Bei mir jedenfalls schienbar net.

[edit]Tippfehler im Code verbessert[/edit]
_________________
https://jonathank.de/games/


Zuletzt bearbeitet von Jonathan_Klein am 30.12.2005, 13:28, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 00:43    Titel: Antworten mit Zitat

komisch, normalerweise geht das. Kannst du in tausenden WinAPI-Funktionen sehen. Hier mal ein Beispiel, das 100%ig geht(is net von mir, is aus nem Buch ein Beispiel):
CPP:
#include <iostream>
typedef unsigned short USHORT;
typedef unsigned long ULONG;

ULONG GetPower(USHORT n, USHORT power);

int main()
{   
     USHORT number, power;   
     ULONG answer;   

     cout << "Geben Sie eine Zahl ein: ";   
     cin >> number;   
     cout << "Zu welcher Potenz? ";   
     cin >> power;   answer = GetPower(number,power);   
     cout << number << " hoch " << power << "ist gleich " << answer << endl;

     return 0;
}

ULONG GetPower(USHORT n, USHORT power)
{   
      if(power == 1)     
          return n;   
     else       
          return (n * GetPower(n,power-1));
}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 01:24    Titel: Antworten mit Zitat

Was spuckt er denn für einen Fehler aus?
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 10:33    Titel: Antworten mit Zitat

Fehlt bei Funktin noch ein o oder ist das absichtlich? Falls eins fehlt, wärs ja mehrdeutig.
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 11:23    Titel: Re: Kann man Funktionen mit typedef Typen überladen? Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
CPP:
typedef int Typ1;
typedef int Typ2;

int Funktion(Typ1 Var);
int Funktin(Typ2 Var);



Jo, Oliver hat schon recht. Wenn bei der Funktion ein "o" fehlen würde, also das so hieß:
CPP:
int Funktion(Typ1 Var);
int Funktion(Typ2 Var);

Dann wäre klar warum das net geht, da du 2 gleiche Funktionen hast und beide (int) als Parameter haben. Ich geh aber mal davon aus, dass das nur ein Beispiel von dir war, oder?

DirectXer Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 13:28    Titel: Antworten mit Zitat

ja so soltle es sein. Die haben ja ursprüngliche beide int als Parameter, aber durch die typedefs sollten es ja unterschiedliche Typen sein. Wenn noch nciht mal das geht, wären typedefs doch n bissle sinnlos, oder?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 13:38    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
ja so soltle es sein. Die haben ja ursprüngliche beide int als Parameter, aber durch die typedefs sollten es ja unterschiedliche Typen sein. Wenn noch nciht mal das geht, wären typedefs doch n bissle sinnlos, oder?


Wer sagt, dass typedefs dafür gemacht worden sind?
Was stellst du dir vor, soll der Compiler aufrufen, wenn du

CPP:
int a = 234234;
Funktion(a);


schreibst? Das wäre mehrdeutig.
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 13:59    Titel: Antworten mit Zitat

Dann soll der mir sagen, das es keine funktin gibt die int als Parameter erwartet. Mir schient die einzige Lösugn wäre es zu schreiben:
CPP:
struct Typ1
{
int var;
}

struct Typ2
{
int Var:
}

Funktion(Typ1 var);
Funktion(Typ2 var);

aber das ist meiner Meinung nach bissle unschön.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 14:44    Titel: Antworten mit Zitat

Zitat:

Dann soll der mir sagen, das es keine funktin gibt die int als Parameter erwartet.


Der erkennt das aber automatisch.
Was soll das Ganze überhaupt für einen Sinn haben? Question
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 15:02    Titel: Antworten mit Zitat

^^ das kann doch net gehen, jonathan Wink

warte, stell dir das so vor: typedef ist mehr oder weniger ein Update für #defines, was sich der Typen widmet. Früher, als es noch kein typedef gab, wurden alle neuen Typen per #define definiert. So würde der Präprozesssor eben alle entsprechenden Namen vor dem Compilieren durch die Typen ersetzen. Jetz mal dir das ma in deinem Code aus Arrow
CPP:
int Funktion (int Typ1);
int Funktion (int Typ2);

und? geht net. typedef wurde nur u. A. deswegen entwickelt, weil die #define Sachen dafür net geeignet waren(wurde schon oft genug im Forum erläutert, warum). Vom Prinzip her ist es aber ähnlich. Wink

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 15:42    Titel: Antworten mit Zitat

das es mit defines net gehen kann, war mir klar. Ich dachte nur, da typedefs n update darstellen, hätte das durchaus mal funktionierne können. Sehr schade, dass das leider nicht funktioniert.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 37
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 18:13    Titel: Antworten mit Zitat

Ich würde 'typedefs' auf keinen Fall als Update von 'define' betrachten. Typedef erzeugt eigene Typen, define arbeitet mittels Textersetzung, das ist der Grund, warum ich rein aus dem Bauchgefühl heraus gesagt hätte, es müsste gehen. Hast du mal C programmiert? Wie legst du da z.B. Strukturen ohne typedef an?

Btw.: 500. Posting die 2. Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
PeaceKiller
JLI Master


Alter: 35
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 18:35    Titel: Antworten mit Zitat

In C++ sind typedefs zu schwach für sowas. Compilerintern sind sie immernoch derselbe Typ wie der ursprüngliche Typ.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 30.12.2005, 22:24    Titel: Antworten mit Zitat

GreveN hat Folgendes geschrieben:
Ich würde 'typedefs' auf keinen Fall als Update von 'define' betrachten. Typedef erzeugt eigene Typen, define arbeitet mittels Textersetzung, das ist der Grund, warum ich rein aus dem Bauchgefühl heraus gesagt hätte, es müsste gehen. Hast du mal C programmiert? Wie legst du da z.B. Strukturen ohne typedef an?

Btw.: 500. Posting die 2. Very Happy

bezog sich die Frage auf mich? Naja, ich hab net behauptet, dass typedef ein Update für define wäre, ich hab nur gesagt, dass man das sich am Anfang so vorstellen könnte. Dann kann man die Einschränkungen besser nachvollziehen Smile

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 01.01.2006, 21:17    Titel: Antworten mit Zitat

Gibt es für sowas nicht Templatefunktionsspezialisierungen? Wink
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum