Allgemeine c++ Frage

FlatTV
Einsteiger
Einsteiger
Beiträge: 110
Registriert: Freitag 9. Januar 2009, 18:22

Allgemeine c++ Frage

Beitrag von FlatTV »

Ich hoffe mir kann jemand bei meinem Problem helfen :-?

Ein "unsigned char[]" Array, mit Steuerzeichen(also auch 0x00), soll in einer "öffentliche" Klasse verfügbar sein.
Leider fällt mir nur diese Lösung ein. Dabei wird das Array aber doppelt im Speicher gehalten und das nervt mich.
Hat hier jemand eine Bessere Idee?

my.h

Code: Alles auswählen

class CMy
{
	public:
		unsigned char g_a[250];
		unsigned char g_b[250];
...
my.cpp

Code: Alles auswählen

CMy::CMy()
{
	unsigned char a[]={
		0x18, 0x00, 0x18, 0x00, 0x00,...
	}
	unsigned char b[]={
		0x18, 0x00, 0x18, 0x00, 0x00,... 
	}

	copy(a, a+(int)(sizeof(a)/sizeof(a[0])), g_a);
	copy(b, b+(int)(sizeof(b)/sizeof(b[0])), g_b);
...
FlatTV
Einsteiger
Einsteiger
Beiträge: 110
Registriert: Freitag 9. Januar 2009, 18:22

Re: Allgemeine c++ Frage

Beitrag von FlatTV »

Mach ich halt "static ..." und "return(...)"
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Allgemeine c++ Frage

Beitrag von seife »

Ich verstehe das problem nicht. Du kannst doch einfach an g_a[] und g_b[] die werte zuweisen. Wieso du die erst auf den Stack und dann mittels "copy" (was auch immer das macht) anscheinend dort rein legst, erschliesst sich mir nicht.

Gib doch mal einen Link auf den ganzen Code, dann kann man das vielleicht verstehen und dann auch sagen, warum das wie vielleicht anders gemacht werden sollte
FlatTV
Einsteiger
Einsteiger
Beiträge: 110
Registriert: Freitag 9. Januar 2009, 18:22

Re: Allgemeine c++ Frage

Beitrag von FlatTV »

Naja, was ich machen will hatte ich ja beschrieben.
Eine einfache Zuweisung für ein public char[]? genau danach Suche ich ja.
Weil mir nichts besseres eingefallen ist, habe ich das im Moment so gelöst.

Code: Alles auswählen

class CIcons
{
	public:
		CIcons();
		~CIcons();
		static CIcons* getInstance();

		unsigned char * getIcon_1();
		unsigned char * getIcon_2();
		unsigned char * getIcon_3();
};

Code: Alles auswählen

#include "icons.h"

CIcons* CIcons::getInstance()
{
	static CIcons* instance = NULL;
	if(!instance)
		instance = new CIcons();
	return instance;
}

CIcons::CIcons()
{
	//
};

CIcons::~CIcons()
{
}

unsigned char * CIcons::getIcon_1()
{
	static unsigned char nr1[]={
	0x18, 0x00, 0x18, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x0f, 0xf8, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x0f, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x0f, 0xf8, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x0f, 0xf8, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x0f, 0xf8, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x0f, 0xf8, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x0f, 0xf8, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x0f, 0xf8, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x0f, 0xf8, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

	return(nr1);
}

unsigned char * CIcons::getIcon_2()
{
	static unsigned char nr2[]={
	0x18, 0x00, 0x18, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00,
	0x08, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x80,
	0x08, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xff, 0x88, 0x88, 0x88, 0x88, 0x80,
	0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0x88, 0x88, 0x88, 0x88, 0x88,
	0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0x88, 0x88, 0x88, 0x88, 0x88,
	0x88, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88,
	0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
	0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
	0x88, 0x88, 0x88, 0x88, 0x8f, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
	0x08, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0x88, 0x88, 0x88, 0x88, 0x80,
	0x08, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0x88, 0x88, 0x88, 0x88, 0x80,
	0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

	return(nr2);
}

unsigned char * CIcons::getIcon_3()
{
	static unsigned char nr3[]={
	0x18, 0x00, 0x18, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00,
	0x08, 0x88, 0x88, 0x88, 0x88, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x80,
	0x08, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0x88, 0x88, 0x88, 0x88, 0x80,
	0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x88,
	0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xf8, 0x88, 0x88, 0x88, 0x88,
	0x88, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xff, 0x88, 0x88, 0x88, 0x88, 0x88,
	0x88, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xff, 0x88, 0x88, 0x88, 0x88, 0x88,
	0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xf8, 0x88, 0x88, 0x88, 0x88,
	0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x88,
	0x08, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0x88, 0x88, 0x88, 0x88, 0x80,
	0x08, 0x88, 0x88, 0x88, 0x88, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x80,
	0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00,
	0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00,
	0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

	return(nr3);
}