Definition/Deklaration

Mickeyman

Mitglied
Hi,
ich habe mal in einem Tutorial gelesen, dass eine Klasse am Ort ihrer Verwendung lediglich denklariert sein muss, und erst später muss man sie dann Definieren.
Leider habe ich letzter Zeit eher andere Erfahrungen gesammelt, was mich vor ein großes Problem stellt, da sonst mein Code nicht funktionieren würde.

Folgende Sachen habe ich ausprobiert und bin daran gescheitert:
1. Versuch: ( error C2027: use of undefined type 'Klasse1<>' )
Code:
template<int a=2, int b=3>
class Klasse1;
//---------------------------------------------------
int main(void) {

	std::cout << sizeof(Klasse1<>);

	return 0;
}
//----------------------------------------------------
template<int a, int b>
class Klasse1
{
public:
	unsigned short SizeX, SizeY;
	Klasse1(): SizeX(a), SizeY(b) {}
};

2. Versuch ( error C2504: 'Klasse2' : base class undefined )
Code:
class Klasse2;

class Klasse1: public Klasse2
{
public:
	unsigned short SizeX, SizeY;
	Klasse1(): SizeX(1), SizeY(2) {}
	~Klasse1() {}
};

class Klasse2 {
protected:
	typedef unsigned int UINT;
};

int main(void) {

	return 0;
}

Ich hoffe mir kann jemand sagen, ob dies normal ist. Denn solche Probleme hatte ich sonst noch nie.

Gruß Mickeyman.