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

📄 star.h

📁 游戏编程精华02-含有几十个游戏编程例子
💻 H
字号:
/* Copyright (C) Greg James, 2001. 
 * All rights reserved worldwide.
 *
 * This software is provided "as is" without express or implied
 * warranties. You may freely copy and compile this source into
 * applications you distribute provided that the copyright text
 * below is included in the resulting source code, for example:
 * "Portions Copyright (C) Greg James, 2001"
 */
#ifndef _STAR_H_
#define _STAR_H_
#include "assert.h"

template < class T > class Star
{
	private :
	union
	{
		T* mpT;
		const T* mpcT;
	};

	public :

	Star< T >( const T* pT = 0 ) : mpcT( pT ){;}
	Star< T >( const Star< T >& aStar ) : mpcT( aStar.mpcT ){;}

	Star< T >& operator=( const Star< T >& rhs )
	{
		if ( mpT != rhs.mpT )
		{
			delete mpT, mpT = rhs.mpT;
		}
		return *this;
	}

	void Clear()
	{
		delete mpT, mpT = 0;
	}
	~Star< T >()
	{
		Clear();
	}

	bool operator<( const Star< T >& aStar ) const
	{
		return ( *this < aStar );
	}

	bool operator!=( const Star< T >& aStar ) const
	{
		return !( *this == aStar );
	}

	bool operator==( const Star< T >& aStar ) const
	{
		return ( *this == aStar );
	}

	operator const T*() const
	{
		assert( mpT );
		return mpcT;
	}

	operator T*()
	{
		assert( mpT );
		return mpT;
	}

	T& operator*() const
	{
		assert( mpT );
		return *mpT;
	}

	T* operator->( void ) const
	{
		assert( mpT );
		return mpT;
	}
};


#endif // _STAR_H_

⌨️ 快捷键说明

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