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
|
Verfasst am: 30.12.2005, 00:19 Titel: Kann man Funktionen mit typedef Typen überladen? |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 30.12.2005, 00:43 Titel: |
|
|
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 30.12.2005, 10:33 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 30.12.2005, 11:23 Titel: Re: Kann man Funktionen mit typedef Typen überladen? |
|
|
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 |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 36 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 30.12.2005, 13:28 Titel: |
|
|
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 |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 30.12.2005, 13:38 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 36 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 30.12.2005, 13:59 Titel: |
|
|
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 |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 30.12.2005, 14:44 Titel: |
|
|
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? _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 30.12.2005, 15:02 Titel: |
|
|
^^ das kann doch net gehen, jonathan
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 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.
Gruß DirectXer |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 36 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 30.12.2005, 15:42 Titel: |
|
|
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 |
|
|
GreveN JLI Master
Alter: 37 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 30.12.2005, 18:13 Titel: |
|
|
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. |
|
Nach oben |
|
|
PeaceKiller JLI Master
Alter: 35 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 30.12.2005, 18:35 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 30.12.2005, 22:24 Titel: |
|
|
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. |
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
Gruß DirectXer |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
|