Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Einfache Funktion aus einer definierten Klasse

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 <
000
26.05.2006, 05:29 Uhr
Audron-AT-www
http://www.sXene.de Audron@sxene.de
(Operator)


Und wieder ein Problem mit meinem Tutorial :S

Ich habe zwei Dateien..
einmal decs.h in der die Deklerationen aufgerufen werden, außerdem eine "getchar" Funktion...


C++:
// Inhalt: decs.H
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;

inline void td(){getchar();}



Und einmal meine Haupt.cpp:


C++:
// Inhalt: Cpp1.cpp
#include "decs.h"


class Cat
{
public:
int itsWeight;
void Miauen();
};


int main()
{
    Cat frisky;

frisky.itsWeight = 5;
frisky.Miauen();

return 0;
}



Nun bekomme ich folgenden Fehler:


Code:
--------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
Linking...
Cpp1.obj : error LNK2001: unresolved external symbol "public: void __thiscall Cat::Miauen(void)" (?Miauen@Cat@@QAEXXZ)
Debug/Cpp1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Cpp1.exe - 2 error(s), 0 warning(s)



Was habe ich falsch gemacht?
Warum kann ich nicht Miauen?
--
Mit freundlichen Grüßen
Audron, audron@sxene.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.05.2006, 07:58 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,

Zitat von Audron-AT-www:

Warum kann ich nicht Miauen?

Weil Du keine Katze bist???

Du hast bestimmt die Implementierung von Miauen vergessen:

C++:
void Cat::Miauen(){
  // mach was
}


--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 26.05.2006 um 07:59 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.05.2006, 09:48 Uhr
xXx
Devil



C++:
#include "decs.h"

class CCat
{
protected:
    int m_nWeight;

public:
    void Miauen(void);               {};
    int GetWeight(void);           { return m_nWeight; };
    void SetWeight(int nWeight)  { m_nWeight = nWeight; };
};


int main()
{
    CCat frisky;

    frisky.SetWeight(5);
    frisky.Miauen();

    return 0;
}

Dieser Post wurde am 26.05.2006 um 09:48 Uhr von xXx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.05.2006, 10:55 Uhr
Audron-AT-www
http://www.sXene.de Audron@sxene.de
(Operator)


Okay, danke... Bin nun ein wenig verwirrt, im Tutorial ist es folgendermaßen beschrieben:


C++:
Beispiel 1:

class Cat

{

public:

unsigned int Age;

unsigned int Weight;

void Meow();

};


Cat  Frisky;

Frisky.Age = 8;

Frisky.Weight = 18;

Frisky.Meow();



Aber okay, die Funktion Meow muss man also erst implementieren. (In der Klasse).

Vielen Dank
--
Mit freundlichen Grüßen
Audron, audron@sxene.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.05.2006, 11:13 Uhr
xXx
Devil


Jo wobei man normalerweise meiner ansicht nach vermeiden sollte public membervariablen zu benutzen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.05.2006, 13:15 Uhr
ao

(Operator)


Ganz bestimmt sollte man das vermeiden. OK, man soll nie nie sagen, aber die Nachteile von public-Variablen wiegen extrem schwer, und mir ist kein Szenario bekannt, in dem es einen wichtigen Grund *dafür* gibt.

Einfache Setter und Getter kosten - wenn sie inline implementiert sind - keine Performance (wirklich keine!) und bieten trotzdem alle Vorteile der Kapselung.

@Audron: Wenn das aus einem Tutorial stammt: Ich hoffe doch, dass das ein allererstes Einführungsbeispiel ist, in dem überhaupt nur vorgestellt wird, was Klassen sind, und dass spätestens im zweiten Beispiel Age und Weight gekapselt werden - und dass erklärt wird, wieso das wichtig ist.

Wenn nicht, möchte ich stark anzweifeln, dass es sich lohnt, mit diesem Tutorial weiterzuarbeiten.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


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: