Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Grundlagen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
16.01.2007, 13:15 Uhr
sst



Ich schreibe in 3 tagen eine Klausur!!
Mit Hilfe meiner Bücher und Skripte konnte ich zu den folgenden Fragen leider keine Antworten finden.

1. Geben Sie den Funktionsprototypen für eine Funktion namens "search" an. Die Funktion search soll die folgenden 3 Parameter in ihrer Parameterlist übernehmen:
1. Parameter: ein C-Feld mit char Werten per Zeiger,
2. Parameter: ein einzelnes Ziffernzeichen (darf nicht verändert werden)
3. Parameter: ein Objekt der Klasse "datenbank" per Referenz
Zusätzlich soll die Funktion return-Wert ein enzelnes zeichen aus dem übernommenen C-Feld per Wert zurückgeben.

2. Nennen Sie die erforderlichen Voraussetzungen dafür, dass man zur Laufzeit des Programms mit dem gleichen Zeiger auf Methoden aus verschiedenen Klassen zugreifen kann.

Kann mir jemand weiterhelfen?

Besten Dank im Voraus.
greetz
sst
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.01.2007, 13:21 Uhr
~otto23
Gast


zu 1)


C++:
void search(char* Parm1, const int x, datenbank &InstanzDatenbank);


die definition sähe dann so aus:

C++:
void search(char* Parm1, const int x, datenbank &InstanzDatenbank)
{
     //Dein Code
}


zu 2)
versteh die formulierung incht so richtig....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.01.2007, 13:41 Uhr
Kest
saint



Zitat:

Zusätzlich soll die Funktion return-Wert ein enzelnes zeichen aus dem übernommenen C-Feld per Wert zurückgeben.


Dann aber nicht void, sondern char, oder ?
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 16.01.2007 um 13:42 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.01.2007, 13:55 Uhr
Kest
saint


Ich hab den Satz aufgeteilt, um ihn besser zu verstehn.

Zitat:

2. Nennen Sie die erforderlichen Voraussetzungen dafür,
dass man zur Laufzeit des Programms
mit dem gleichen Zeiger
auf Methoden aus verschiedenen Klassen zugreifen kann.


Wenn der Zeiger auf die Basisklasse zeigt, dann kann man durch ihn, auf die Methode einer Classe zugreifen, die von der Basisklasse abgeleitet wurde. Sie ist dann zwar mit der Basisklasse verwandt, aber unterschiedlich.



C++:
#include <iostream>
#include <conio.h>

using std::cout;
using std::endl;

class A
{
    public:
        virtual void print() const{
            cout << "a - print" << endl;
            }
};

class B : public A
{
    public:
        virtual void print() const{
            cout << "b - print" << endl;
            }
};


void foo(A* obj){
    obj->print();      // Zeiger auf A, greift auf B's print();
    }


int main()
{
    A a;
    B b;

    foo(&b);


    getch();
    return 0;
}

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 16.01.2007 um 14:14 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.01.2007, 15:21 Uhr
~tipp
Gast



Zitat von Kest:
Ich hab den Satz aufgeteilt, um ihn besser zu verstehn.

Zitat:

2. Nennen Sie die erforderlichen Voraussetzungen dafür,
dass man zur Laufzeit des Programms
mit dem gleichen Zeiger
auf Methoden aus verschiedenen Klassen zugreifen kann.


Wenn der Zeiger auf die Basisklasse zeigt, dann kann man durch ihn, auf die Methode einer Classe zugreifen, die von der Basisklasse abgeleitet wurde. Sie ist dann zwar mit der Basisklasse verwandt, aber unterschiedlich.



C++:
#include <iostream>
#include <conio.h>

using std::cout;
using std::endl;

class A
{
    public:
        virtual void print() const{
            cout << "a - print" << endl;
            }
};

class B : public A
{
    public:
        virtual void print() const{
            cout << "b - print" << endl;
            }
};


void foo(A* obj){
    obj->print();      // Zeiger auf A, greift auf B's print();
    }


int main()
{
    A a;
    B b;

    foo(&b);


    getch();
    return 0;
}



@kest
nur so als tipp, einen anfänger überfordert man mit so einem code sehr schnell. da is ja schon vererbung drin. auch foo() verunsichert beginner, die kennen foo i.d.R. gar nicht und vermute dahinter ein hexenwerk. und namensräume mit using zu verwenden trägt auch nicht zum verständnis bei.....

keep it as simple as possible.... ;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.01.2007, 15:27 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


http://de.wikipedia.org/wiki/Foo
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.01.2007, 15:28 Uhr
Blubber2063



Es wurde hier aber explizit nach Vererbung in der Fragestellung gezielt, daher sollte den Threadersteller der Code nicht überfordern, bei dem using geb ich dir recht. Das mit dem foo ist absolut irrelevant, soviel Verständnis, dass es sich hier nur um einen Namen handelt sollte man bei so einer Frage schon erwarten dürfen.
Dieser Post wurde am 16.01.2007 um 15:28 Uhr von Blubber2063 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.01.2007, 15:35 Uhr
Kest
saint


Ja, gut!
~tipp du hast absolut recht.
Aber !
1. Er schreibt doch eine Klausur.
2. Da er Bücher hat, sollte er sie auch gelesen haben.

Ich dachte mir also, es sei kein Anfänger.

Aber noch ein Mal:
Du hast absolut recht !
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.01.2007, 16:13 Uhr
ao

(Operator)



Zitat von ~tipp:
nur so als tipp, einen anfänger überfordert man mit so einem code sehr schnell.

Dann zeig doch mal eine Demonstration von Basisklassenzeigern, die ohne das alles auskommt. Denn das war ja in der Aufgabe wohl gemeint, oder?

Zitat:
keep it as simple as possible....

... but as accurate as necessary.

Gruß,
ao

Dieser Post wurde am 16.01.2007 um 16:14 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.01.2007, 16:18 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: