Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » C++-Funktion in Klasse bekannt machen?

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
04.06.2004, 12:01 Uhr
Unwissende
...die wirklich Unwissende 8-)


Hallo,

ich wurde gerne folgende Fkt in die Klasse CComputeDlg einbinden:


C++:
int check_addressline(UINT32 start, UINT32 end)
{
    UINT32        *addr;     //pointer to first memory location
    UINT32        value_r;   //value read from memory
    UINT32        value_w=0; //value to write to memory
    UINT32        err_count=0;
    UINT32        mask = 0xFFFFFFFF; //32Bit:
    UINT32        dummy;

    {
          ............
    }
    return err_count;
}



meine Klasse heißt, wie schon gesagt, CComputeDlg.
Wieso möchte ich überhaupt die Funktion check_addressline() der Klasse CComputeDlg bekannt machen?
Ich möchte in der Fkt. weitere Funktionen wie z.B. SetTimer aufrufen.

Nun, bisher bin ich wie folgt vorgegangen:
1.

C++:
int CComputeDlg:: check_addressline(UINT32 start, UINT32 end)


und
2.
musste ich nun den Prototypen der Fkt. irgendwie unterbringen, d.h. die Funktion der Klasse CComputeDlg bekannt machen:

Variante 2.1: (FUNKTIONNIERT NIcHT!)

C++:
CComputeDlg::CComputeDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CComputeDlg::IDD, pParent)
{

    int check_addressline(UINT32 start, UINT32 end);
    
    i=0; //Laufvar bei der ProgressBar; fuer den Datenleitungstest
    i_add=0; //Laufvar bei der ProgressBar; für den Adressleitungstest
    //{{AFX_DATA_INIT(CComputeDlg)
    //}}AFX_DATA_INIT
    
}


Variante 2.2: (FUNKTIONNIERT AUCH NICHT!)
im header (CCompute.h):

C++:
class CComputeDlg : public CDialog
{
public:
    CComputeDlg(CWnd* pParent = NULL);   // Standardkonstruktor

    int check_addressline(UINT32 start, UINT32 end);

// Dialogfelddaten
    //{{AFX_DATA(CComputeDlg)
    enum { IDD = IDD_COMPUTE };
    
    //}}AFX_DATA

    int m_nTimer;
    UINT32  i,iii; // (Laufvariable für die ProgressBar)
    
// Überschreibungen
    // Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen
    //{{AFX_VIRTUAL(CComputeDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
    //}}AFX_VIRTUAL

// Implementierung
protected:

    // Generierte Nachrichtenzuordnungsfunktionen
    //{{AFX_MSG(CComputeDlg)
    afx_msg void OnTimer(UINT nIDEvent);
    afx_msg void OnStart();
    virtual void OnCancel();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};




Die Fehlermeldung ist wie folgt:

Code:
error C2039: 'check_addressline' : Ist kein Element von 'CComputeDlg'


und

Code:
Siehe Deklaration von 'CComputeDlg'





Ich weiß jetzt auch nicht mehr weiter?
Wo muss den jetzt der Prototyp überhaupt hin?
Hab ich noch was vergessen???????
--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer

Dieser Post wurde am 04.06.2004 um 12:03 Uhr von Unwissende editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.06.2004, 13:03 Uhr
~mike
Gast


Hi!
Probier rmal ne Mischung aus Variante 1 und 2.2

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.06.2004, 13:07 Uhr
rene rosenberger



int check_addressline(UINT32 start, UINT32 end); muss in die CComputeDlg.h
--
gruesse rene
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.06.2004, 13:50 Uhr
Unwissende
...die wirklich Unwissende 8-)


???????
Welche Möglichkeit soll ich denn jetzt nehmen???
Die erste oder die zweite?
--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.06.2004, 13:54 Uhr
Unwissende
...die wirklich Unwissende 8-)


Ich blick das net...

also, meine CComputeDlg sieht wie folgt aus, wo muss den jetzt der Prototyp genau rein?

C++:


#if !defined(AFX_COMPUTEDLG_H__4F58EB63_A73D_4BA7_9891_C680BBAB014D__INCLUDED_)
#define AFX_COMPUTEDLG_H__4F58EB63_A73D_4BA7_9891_C680BBAB014D__INCLUDED_

#if _MSC_VER > 1000
#pragma once

#endif // _MSC_VER > 1000
// ComputeDlg.h : Header-Datei
//
// Module glogal variables//
extern int i_add;

//int check_addressline(UINT32 start, UINT32 end); HIER?

/////////////////////////////////////////////////////////////////////////////
// Dialogfeld CComputeDlg

class CComputeDlg : public CDialog
{
// Konstruktion
public:
    

    CComputeDlg(CWnd* pParent = NULL);   // Standardkonstruktor
    //int check_addressline(UINT32 start, UINT32 end); ODER HIER?

// Dialogfelddaten
    //{{AFX_DATA(CComputeDlg)
    enum { IDD = IDD_COMPUTE };
    
    //}}AFX_DATA

    

    int m_nTimer;
    UINT32  i,iii; //entsprach dem m_nCount (Laufvariable für die ProgressBar)
        
    
    
// Überschreibungen
    // Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen
    //{{AFX_VIRTUAL(CComputeDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
    //}}AFX_VIRTUAL

// Implementierung
protected:

    // Generierte Nachrichtenzuordnungsfunktionen
    //{{AFX_MSG(CComputeDlg)
    afx_msg void OnTimer(UINT nIDEvent);
    afx_msg void OnStart();
    virtual void OnCancel();
    afx_msg void OnStartAddr();
    afx_msg void OnCancel2();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.

#endif // AFX_COMPUTEDLG_H__4F58EB63_A73D_4BA7_9891_C680BBAB014D__INCLUDED_



--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.06.2004, 14:12 Uhr
rene rosenberger




Code:
#if !defined(AFX_COMPUTEDLG_H__4F58EB63_A73D_4BA7_9891_C680BBAB014D__INCLUDED_)
#define AFX_COMPUTEDLG_H__4F58EB63_A73D_4BA7_9891_C680BBAB014D__INCLUDED_

#if _MSC_VER > 1000
#pragma once

#endif // _MSC_VER > 1000
// ComputeDlg.h : Header-Datei
//
// Module glogal variables//
extern int i_add;



/////////////////////////////////////////////////////////////////////////////
// Dialogfeld CComputeDlg

class CComputeDlg : public CDialog
{
// Konstruktion
public:
    

    CComputeDlg(CWnd* pParent = NULL);   // Standardkonstruktor
    int check_addressline(UINT32 start, UINT32 end);   //HIER!!

// Dialogfelddaten
    //{{AFX_DATA(CComputeDlg)
    enum { IDD = IDD_COMPUTE };
    
    //}}AFX_DATA

    

    int m_nTimer;
    UINT32  i,iii; //entsprach dem m_nCount (Laufvariable für die ProgressBar)
        
    
    
// Überschreibungen
    // Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen
    //{{AFX_VIRTUAL(CComputeDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
    //}}AFX_VIRTUAL

// Implementierung
protected:

    // Generierte Nachrichtenzuordnungsfunktionen
    //{{AFX_MSG(CComputeDlg)
    afx_msg void OnTimer(UINT nIDEvent);
    afx_msg void OnStart();
    virtual void OnCancel();
    afx_msg void OnStartAddr();
    afx_msg void OnCancel2();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.

#endif // AFX_COMPUTEDLG_H__4F58EB63_A73D_4BA7_9891_C680BBAB014D__INCLUDED_


--
gruesse rene
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.06.2004, 14:42 Uhr
Unwissende
...die wirklich Unwissende 8-)


Hab ich jetzt ausprobiert:

Ach menno, das ging doch schonmal, wieso gehts denn jetzt nicht.
Nochmal zusammengefasst:

Ich hab nur die Def. von der Fkt:

C++:
int CComputeDlg::check_addressline(UINT32 start, UINT32 end)
{
       .......................
}


in der Datei ComputeDlg.cpp

und den header ComputeDlg.h wie oben vom Rene übernommen....und es klappt net:


Code:
error C2511: 'check_addressline' : Überladene Member-Funktion 'int (unsigned long,unsigned long)' nicht in 'CComputeDlg' gefunden

Siehe Deklaration von 'CComputeDlg'




--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer

Dieser Post wurde am 04.06.2004 um 14:42 Uhr von Unwissende editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.06.2004, 14:49 Uhr
Unwissende
...die wirklich Unwissende 8-)


Überladene Member-Funktion:

"Überladen" heißt ja eigentlich, dass ich einen einzigen Funktionsnamen habe, jedoch verschiedene Implementierungen.......
Aber ich hab doch bei mir nur die EINE Impelemtierung.......*grübel*
--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.06.2004, 14:51 Uhr
rene rosenberger



probier mal statt UINT32 zu nehmen unsigned long aus.
--
gruesse rene
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
04.06.2004, 14:55 Uhr
rene rosenberger



nein überladen heißt : die parameter der bekanntmachung in der klasse stimmen nicht mit den parametern der implementierung überein. also wenn du in der implementierung z.b. nen parameter zufügst.
--
gruesse rene
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: