⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enumcount

📁 ACE编程的一本经典BIBLE的源代码,喜欢网络编程的别错过
💻
字号:
From: Gianni Mariani <gi2nospam@mariani.ws>
Date: 26 Jul 2003 04:52:43 GMT
Newsgroups: comp.lang.c++
Subject: Re: enum count

Clive wrote:
> If you have an enum, is there any way during execution to find the number of
> values in the enum?
> Say I have,
> 
> enum great { five, ten, fifteen };
> 
> How could I get the number 3 from that?
> 
> 

replace the enums with objects that report themselves to a registry.


I have done it in the past using a template ...

templace <typename base>
class ExposedEnum : public base
{
	public:
	int	enum_val;	
	ExposedEnum( int number )
	  : enum_val( number )
	{
		ExposedEnumRegister<base>::Register( *this );
	}

	ExposedEnum( int number )
	  : enum_val( ExposedEnumRegister<base>::GetNextNumber() )
	{
		ExposedEnumRegister<base>::Register( *this );
	}



// some more stuff ...

	operator int () const
	{
		return enum_val;
	}

	explicit ExposedEnum( const ExposedEnum & foo );
};


template <typename base>
class ExposedEnumRegister
{

	static int GetNextNumber ....

	static void Register ....

	static int Count ....

}


Now you can forward declare them...

extern ExposedEnum< great > five;

extern ExposedEnum< great > ten;

extern ExposedEnum< great > fifteen;




In a cpp file you can instantiate them.

ExposedEnum< great > five( 5 );

ExposedEnum< great > ten( 10 );

ExposedEnum< great > fifteen;


Now, if you want to know how many you have :

ExposedEnumRegister< great >::Count();



Disclaimer - it's an outline only, yes it's incomplete.

G

EnumCount,v 1.1 2005/05/24 04:33:12 turkaye Exp

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -