C++ PointerArray - Seite 2

Seite 2 von 3 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_pointerarray_35364/page_2 - zur Vollversion wechseln!


-wrax- schrieb am 25.05.2002 um 23:13

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- schrieb am 25.05.2002 um 23:15

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 schrieb am 25.05.2002 um 23:26

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


schrieb am 25.05.2002 um 23:29

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- schrieb am 25.05.2002 um 23:39

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...


wobbo schrieb am 25.05.2002 um 23:47

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 schrieb am 25.05.2002 um 23:50

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- schrieb am 25.05.2002 um 23:58

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 schrieb am 26.05.2002 um 00:02

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- schrieb am 26.05.2002 um 00:07

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 schrieb am 26.05.2002 um 00:11

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- schrieb am 26.05.2002 um 00:17

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 schrieb am 26.05.2002 um 00:57

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


wobbo schrieb am 26.05.2002 um 11:01

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- schrieb am 26.05.2002 um 14:33

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)...




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026