"We are back" « oc.at

C++ PointerArray

-wrax- 25.05.2002 - 15:24 2244 33
Posts

-wrax-

<...>
Avatar
Registered: Mar 2002
Location: .at
Posts: 1532
Zitat von .deRElict.
deine Anwendung schautma stark nach standard-datenverwaltung aus.

da wärst du IMHO mit einer Access-basierenden Lösung besser beraten als das in C++ hinzupfuschen ;)
sag das meinen programmierlehrer....

-wrax-

<...>
Avatar
Registered: Mar 2002
Location: .at
Posts: 1532
that... kannst du bitte alle deine veränderung schreiben...

.)array groeße zuordnen
.)cast weglasen (wie geht das dann)

und schreib bitte main hier her... copy&paste...

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
Hm, kanns sein dass dein Programmierlehrer auf ganzer Linie versagt hat? :)

Aufgabe A:

gegeben ist: char x[];

gesucht ist: das gleiche Array MIT Größe.

Lösung: Man schreibt eine Zahl in die Klammern (duh).

z.B.:
char x[42];


Aufgabe B:

Um einen Cast nicht zu machen, schreibt man einfach keinen hin... (duh).

z.B.:
s[0]->wifuspEingabe();


EDIT:
Sorry, hab "main" vergessen....
copy&paste:



main

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
Zitat von -wRax-
sag das meinen programmierlehrer....

no prob ... hab ich damals @school auch ;)
resultat war, dass ich stattdessen Speicherresistente Progs gecodet hab (damals zu DOS-Zeiten) :D

-wrax-

<...>
Avatar
Registered: Mar 2002
Location: .at
Posts: 1532
ok... thx...

aber jetzt noch als abschließende frage:

ich will wifuspEingabe(); u. wifuspAusgabe(); nicht virtuell in der basisklasse haben...
kann ich das irgendwie umgehen....
das wuerde nämlich einiges leichter machen, weil meine hierarchie mehrfach verzweigt ist...
Bearbeitet von -wrax- am 25.05.2002, 23:40

wobbo

...
Registered: Apr 2001
Location: Drehstuhl :)
Posts: 1022
Zitat von .deRElict.
no prob ... hab ich damals @school auch ;)
resultat war, dass ich stattdessen Speicherresistente Progs gecodet hab (damals zu DOS-Zeiten) :D
du kennst unsren programmierlehrer ned......

aber was für ein glück dass ich in c-praxis nicht denselben wie wrax habe :p

@wrax
1.anstatt beim konstruktor char h[] zu übergeben, nimm lieber char* h

2.anstatt dieser kryptischen typecasts und so, ruf ihn wifuspEingabe() die sportgEingabe() auf ->
Code:
void wifusp::wifuspEingabe ()
{ sportg::sportgEingabe();
   ... //eingaben für die eigene klasse
}

oder du gibst den Eingabefunktion einen einheitlichen Namen und machst sie virtual. Was die Sache bei der Collection dann sehr vereinfacht, da du dann unabhängig vom Typ der Klasse einfach instanz->eingabe(); aufrufst und durch virtual automatisch die richtige aufgerufen wird ;)

wobbo

...
Registered: Apr 2001
Location: Drehstuhl :)
Posts: 1022
Zitat von -wRax-
ok... thx...

aber jetzt noch als abschließende frage:

ich will wifuspEingabe(); u. wifuspAusgabe(); nicht virtuell in der basisklasse haben...
kann ich das irgendwie umgehen....
das wuerde nämlich einiges leichter machen, weil meine hierarchie mehrfach verzweigt ist...
dann lösch sie dort einfach raus :rolleyes:

is ja was ganz normales dass in subklassen neue funktionen dazukommen, die eben nur in der einen klasse sind, und die basisklasse überhaupt nix angeht

-wrax-

<...>
Avatar
Registered: Mar 2002
Location: .at
Posts: 1532
aber wenn ich mit den pointer einer basisklasse auf eine subklasse zeigen lasse... kann ich nur die funktionen aufrufen die in der basisklasse (virtual) deklariert sind...

tztztzt,, ich hab gedacht du kannst programmieren...

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
Zitat von -wRax-
aber wenn ich mit den pointer einer basisklasse auf eine subklasse zeigen lasse... kann ich nur die funktionen aufrufen die in der basisklasse (virtual) deklariert sind...

reicht doch, oder?

(zumindest in dem Kontext des bisher bekannten Teilproblems)

-wrax-

<...>
Avatar
Registered: Mar 2002
Location: .at
Posts: 1532
zur erleuterung: ich hab 6subklassen... wenn ich jetzt alle funktionen von denen in der basisklasse virtual schreib (werde ich wahrscheinlich machen),,, ist das nicht mehr wirklich "schoenes" programmieren...

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
Zitat von -wRax-
zur erleuterung: ich hab 6subklassen... wenn ich jetzt alle funktionen von denen in der basisklasse virtual schreib (werde ich wahrscheinlich machen),,, ist das nicht mehr wirklich "schoenes" programmieren...

Das war noch nie "schönes Programmieren". Warum musst du alle spezialisierten Funktionen explizit von außen aufrufen? Wenn die Klassen so unterschiedlich sind, dann gehören sie nicht in die gleiche Collection. Wenn sie nach außen hin ein einheitliches Interface haben, dann geht das ja über die virtuellen Funktionen.

-wrax-

<...>
Avatar
Registered: Mar 2002
Location: .at
Posts: 1532
Zitat von that
Das war noch nie "schönes Programmieren"
jetzt net bampert werden...

aber hast recht,,, ich werd jetzt die ganzen funktionen irgendwie mit einander verschachteln..

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
folgendes wäre vielleicht auch eine möglichkeit

struct oben{
int alter;
char name[20];
};

struct unten{
char position[50];
int anzahl;
oben person_info;
} myobjekt[2];

unten *obj=&myobjekt[0];

void main(){
...
obj->anzahl
obj->position
obj->person_info.name
obj->person_info.alter
...
}

wenns unbedingt mit einer class sein soll

#include <string.h>
#include <iostream.h>

#define LEN 2

class obj{
public:
int alter, anzahl;
char name[20], position[50];
void set_values(int al, int an, char* na, char* po){
alter = al;
anzahl = an;
strncpy(name,na,20);
strncpy(position,po,50);
}
};

void main(){
obj *daten = new obj[LEN];
daten[0].set_values(20,2,"g33k","comp");
daten[1].set_values(10,5,"pure","l33t");
for(int i=0;i<LEN;i++){
cout << "Alter #" << i << ": " << daten[i].alter << endl;
cout << "Name #" << i << ": " << daten[i].name << endl;
cout << "Anzahl #" << i << ": " << daten[i].anzahl << endl;
cout << "Position #" << i << ": " << daten[i].position << endl;
cout << endl;
}
}

kombiniert mit file i/o hat man dann schon eine kleine lokale datenbank
was dein lehrer da verlangt is mir schleierhaft ... seh null sinn darin
Bearbeitet von FMFlash am 26.05.2002, 01:55

wobbo

...
Registered: Apr 2001
Location: Drehstuhl :)
Posts: 1022
Zitat von FMFlash
was dein lehrer da verlangt is mir schleierhaft ... seh null sinn darin

unser lehrer is ein inkompetentes vieh ohne wirbelsäule mit der stimme einer opernsängerin :o

er verlangt von uns dass wir uns irgendetwas "abstraktes" ausdenken, um ihm zu zeigen dass wir inclusion polymorphie "verstanden" haben :rolleyes:

aber selbst wenn wir ihm gute gründe gebracht hätten etwas praxisorientiertes zu machen, hätte das keinen sinn gehabt... mit dem lehrer lasst sich nicht reden, schon gar nicht über die notengebung :rolleyes:

-wrax-

<...>
Avatar
Registered: Mar 2002
Location: .at
Posts: 1532
FMFlash danke fuer dein beispiel...

aber wir sollen die vererbung zeigen... und du hast es aber nur mit 1er klasse gemacht.... (fuer das beispiel vollkommen ausreichend)...
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz