Kein Zugriff auf private Member...



  • Ich sehe nicht wo in meiner Klasse etwas als private definiert ist. Der Fehler ist folgender

    error C2248: "CObject::CObject": Kein Zugriff auf private Member, dessen Deklaration in der CObject-Klasse erfolgte.
    c:\programme\microsoft visual studio 8\vc\atlmfc\include\afx.h(558): Siehe Deklaration von 'CObject::CObject'
    c:\programme\microsoft visual studio 8\vc\atlmfc\include\afx.h(529): Siehe Deklaration von 'CObject'
    Diese Diagnose trat in der vom Compiler generierten Funktion "CDC::CDC(const CDC &)" auf.

    Der Aufruf bei dem das passiert ist

    BOOL Result = BitmapOperations.WriteWindowToDIB2((LPCTSTR)csFileName, dc, rect);
    

    aus der Funktion

    void CGraphCtrl::SaveBitmap(CString csFileName)
    {
    	CPaintDC dc(this);
    	CRect rect=GetSize();
    	BOOL Result = BitmapOperations.WriteWindowToDIB2((LPCTSTR)csFileName, dc, rect);
    }
    

    mit

    #include "BitmapPicture.h"
    
    class CGraphCtrl : 	public CStatic
    {
    ...
    public:
    	void SaveBitmap(CString csFileName);
    	CBitmapPicture BitmapOperations;
    ...
    
    class CBitmapPicture : CBitmap 
    {
    public:
    	CBitmapPicture(void);
    	~CBitmapPicture(void);
    
    private:
    	int GetMaxX(CDC* dc);
    
    public:
    	BOOL WriteWindowToDIB2( LPCTSTR szFile, CPaintDC dc, CRect rect);
    }
    

    was ist davon nun private?

    Matthias



  • mach mal aus

    class CBitmapPicture : CBitmap
    

    einfach folgendes:

    class CBitmapPicture : public CBitmap
    


  • (D)Evil schrieb:

    mach mal aus

    class CBitmapPicture : CBitmap
    

    einfach folgendes:

    class CBitmapPicture : public CBitmap
    

    Ok, verstehe ich.
    Jetzt habe ich allerdings das ': public CBitmap' ganz rausgenommen, da ich es nicht mehr brauche. Jetzt bekomme ich wieder diese Fehlermeldung und sehe nicht was jetzt wieder fehlen sollte, da vorher alles funktioniert hat. Der Fehler tritt auch wieder an derselben Stelle auf.

    BitmapPicture.h

    #pragma once
    
    class CBitmapPicture 
    {
    public:
    	CBitmapPicture(void);
    	~CBitmapPicture(void);
    
    public:
    	//BOOL WriteWindowToDIB( LPCTSTR szFile, CWnd *pWnd );
    	BOOL WriteWindowToDIB( LPCTSTR szFile, CPaintDC dc, CRect rect);
    	BOOL WriteDIBToFile( LPCTSTR szFile, HANDLE hDIB);
    	HANDLE DDBToDIB( CBitmap& bitmap, DWORD dwCompression, CPalette* pPal ) ;
    	BOOL LoadBMPImage( LPCTSTR sBMPFile, CBitmap& bitmap, CPalette *pPal );
    };
    

    GraphCtrl.h

    #pragma once
    #include "afxwin.h"
    #include "memdc.h"
    #include <vector>
    #include "BitmapPicture.h"
    
    using namespace std; 
    
    class CGraphCtrl : public CStatic
    {
    // Construction
    ...
    // Implementation
    public:
    ...
    	CBitmapPicture BitmapOperations;
    	// Generated message map functions
    ...
    };
    

    Der Fehler tritt wieder auf bei

    BOOL CGraphCtrl::SaveBitmap(CString csFileName)
    {
    	CPaintDC dc(this);
    	PlotToDC(&dc);
    	BOOL Result = BitmapOperations.WriteWindowToDIB((LPCTSTR)csFileName,dc, GetSize());
    

    1>GraphCtrl.cpp
    1>c:\programme\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(931) : error C2248: "CObject::CObject": Kein Zugriff auf private Member, dessen Deklaration in der CObject-Klasse erfolgte.
    1> c:\programme\microsoft visual studio 8\vc\atlmfc\include\afx.h(558): Siehe Deklaration von 'CObject::CObject'
    1> c:\programme\microsoft visual studio 8\vc\atlmfc\include\afx.h(529): Siehe Deklaration von 'CObject'
    1> Diese Diagnose trat in der vom Compiler generierten Funktion "CDC::CDC(const CDC &)" auf.

    mir fehlt im Moment der Anhaltspunkt wie ich das ganze debuggen soll.

    Matthias



  • CPaintDC ist nicht kopierbar, den kannst du nicht by value übergeben.


Anmelden zum Antworten