Zeiger auf Klasse PrivateFontCollection erstellen

fujitsufan

Erfahrenes Mitglied
Hallo,

ist es irgendwie möglich, einen Zeiger auf die Klasse "PrivateFontCollektion" zu erzeugen.
Das gelinkt mir nur im CPP- File aber nicht im Header- File damit ich globalen Zugriff drauf hätte.


Code:
class GdiPlusPrivateFonts 
{
	public:
		int iNew;
		PrivateFontCollection *pfc2;
};


Code:
PrivateFontCollection* GdiPlusPrivateFonts ::pfc1 = NULL ;

mfG.
fujitsufan
 
ist es irgendwie möglich, einen Zeiger auf die Klasse "PrivateFontCollektion" zu erzeugen.
Das gelinkt mir nur im CPP- File aber nicht im Header- File damit ich globalen Zugriff drauf hätte.
Code:
class GdiPlusPrivateFonts 
{
	public:
		int iNew;
		PrivateFontCollection *pfc2;
};


Code:
PrivateFontCollection* GdiPlusPrivateFonts ::pfc1 = NULL ;

Was genau gelingt oder besser gefragt: was passiert oder passiert nicht ?

Reicht nicht einfach ein
C++:
PrivateFontCollection* pfc1;  // ggf. mit dem entsprechenden Include

Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Hallo Klaus,

ich habe einen Zeiger "pfc1" auf diese Klasse schon mal innerhalb einer vorhandenen Klasse deklariert.
Code:
class GdiPlusBitmap : public GdiBitmap {
    Gdiplus::Bitmap *_bitmap;

protected:
    /**
     * copy.
     */
	GdiPlusBitmap(Gdiplus::Bitmap* b): _bitmap(b) {}
public:
	//Statische Variable hier einfügen und auf Wert 0 setzen
	static  PrivateFontCollection *pfc1 ;
};
Der Zugriff auf diesen Zeiger innerhalb dieser Klasse funktioniert.
Code:
bool GdiPlusBitmap::drawString(string  textToDraw, RECT rect, COLORREF color, int fontSize, string SelFontName, string alignment)
{
	int iFontPos = -1;
   
	//GDI+ Startup -> wichtig: nicht vergessen
    GdiplusStartupInput gdiplusStartupOutput;
    ULONG_PTR           gdiplusToken;
    // Initialize GDI+.
    GdiplusStartup(&gdiplusToken, &gdiplusStartupOutput, NULL);

	if ( GdiPlusBitmap::pfc1 == NULL  )
	{
		GdiPlusBitmap::pfc1 = new Gdiplus::PrivateFontCollection();

		//Private-Schriften Tabelle für Gdi+ Klasse erstellen
		GdiBitmap::InstallGdiPlusFonts();
	}

Einen weiteren Zeiger "pfc2" in einer globalen Headerdatei funktioniert nicht.

Fehler: : error C2039: 'pfc1': Ist kein Element von 'GdiPlusBitmap'
Alles in allem 568 Fehler.

Kann ich nur einmal einen Zeiger auf diese Klasse deklarieren?
Ich habe keine Ahnung.

mfG.
fujitsufan
 
Und weiter?

Die Fehlermeldung bezieht sich (angeblich) auf pfc1.

\OT: Warum werden immer nur 50% der Fragen beantwortet? Reicht da die Konzentration nicht aus? Schreibe ich irgendwie undeutlich? Was soll man mit so einem dahingesch* Beitrag anfangen?
 
Hallo,

die Variablendeklaration habe ich in einer globalen Headerdatei "globalvar.h" in der ich alle übrigen Variablen bevorrate.

Jetzt auch
Code:
extern PrivateFontCollection *pfc2;
Folgende Fehler treten auf:
error C2039: 'pfc1': Ist kein Element von 'GdiPlusBitmap' -> 9x bei jedem Zugriff auf den bisherigen Zeiger. Bezieht sich offensichtlich auf den bisherig verwendeten Zeiger der unter der Klasse "GdiPlusBitmap" deklariert ist.
errror C2086: 'int *pfc2: Neudefinition: -> 40x an der Stelle der Variablendeklaration
error C2143: Syntaxfehler: Es fehlt ';' vor '*' -> 86x an der Stelle der Variablendeklaration
error C2872: 'PrivateFontCollection': Mehrdeutiges Symbol -> ca. 300x jeweils an Stelle der Variablendeklaration in der Headerdatei.

Wenn ich mit den Fehlermeldungen klar kommen würde, bräuchte ich keine Hilfe.
Tut mir leid.

Trotzdem Danke!

mfG.
fujitsufan
 
Hallo fujitsufan

Wenn man den Code nicht vor sich sieht kann man halt grundsätzlich lediglich raten.

Anhand deiner Fehlermeldungen würde ich mal folgendes vermuten:
errror C2086: 'int *pfc2: Neudefinition
error C2143: Syntaxfehler: Es fehlt ';' vor '*'

Sowie folgendes:
C++:
Gdiplus::Bitmap *_bitmap;

Lassen mich grundsätzlich vermuten, dass es möglicherweise so lauten soll:
C++:
extern Gdiplus::PrivateFontCollection *pfc2;

error C2039: 'pfc1': Ist kein Element von 'GdiPlusBitmap'

Offensichtlich hast du den Member pfc1 aus der Klasse GdiPlusBitmap entfernt.

error C2872: 'PrivateFontCollection': Mehrdeutiges Symbol

So wie es aussieht hast du mehrere Typen im Sichtbarkeitsbereich in dem du pfc2 definiert hast die den Namen "PrivateFontCollection" haben (Stichwort using namespace).

Alles spekulativ und ohne fundierte Grundlage, da der Code nicht vorhanden ist.
 

Neue Beiträge

Zurück