C++で配列長を求めたいのに

うわ、やられた。
配列長求められねぇ。
array.lengthができればどんなに快適か。

//テスト用のどうでもいいクラス
//変数二つ用意しているのはクラスのサイズが4byteだと
//アドレスのサイズと見分けがつかないので
class Hoge{
	int a;
	int b;
};

//スタックの配列の長さを求める場合
int main(const int arg){
	Hoge* hoge = new Hoge[20];

	int one = sizeof(Hoge);	//クラスのサイズ
	int all = sizeof(hoge);	//配列全体のサイズ
	int len = all/one;		//配列の長さ

	printf("%d %d %d",ne,all,len);
	//実行結果
	//8 160 20
	return 0;
}

//newなりmallocなりを使ったヒープの配列の長さの場合
int main(const int arg){
	Hoge* hoge = new Hoge[20];

	int one = sizeof(Hoge);	//クラスのサイズ
	int all = sizeof(hoge);	//配列全体のサイズ
	int len = all/one;		//配列の長さ

	printf("%d %d %d",ne,all,len);
	//実行結果
	//8 4 0
	return 0;
}


スタックならOKだけどヒープだとだめだ。Hoge型のアドレスが返ってきやがる。
動的に作った配列の長さはわかんない。
自分で配列クラスを作って、new MyArray(Length) した時にlengthを保持して
myArray->getLength()とかできるようにすればいいのか。


……
だからBrewArrayクラスがあるのか。
「良く分からないけど使わないでいいや」はやっぱ危険だorz