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

📄 thin_ptr.h

📁 The source code of Travelling Salesman Problem. Implement in Visual C++.
💻 H
字号:
/*
 Copyright (c) 2001 
 Author: Konstantin Boukreev 
 E-mail: konstantin@mail.primorye.ru 

 Created: 05.09.2001 12:19:42
 Version: 1.0.0

*/

#ifndef _thin_ptr_08dde7a2_d5d1_4fbb_a29e_9365fa1b04a8
#define _thin_ptr_08dde7a2_d5d1_4fbb_a29e_9365fa1b04a8

#if _MSC_VER > 1000 
#pragma once
#endif // _MSC_VER > 1000

template <typename T, const bool tAutoDestroy = false >
struct thin_ptr
{
	typedef T wrapped_type;
	
	T* p;

	thin_ptr(T* p) {this->p = p;}
	thin_ptr(const thin_ptr& x) {this->operator=(x);}
	~thin_ptr() { if (tAutoDestroy) destroy(); }
		
	int destroy() {delete p; p = 0; return 0;}
	T*  release() {T* tp = p; p = 0; return tp;}
	
	T* operator -> () const {_ASSERTE(p); return p;}
	T& operator *  () const {_ASSERTE(p); return *p;}
	T** operator & () const {_ASSERTE(p); return &p;}
	operator T*    () const {_ASSERTE(p); return p;}
	T* operator =  (T* p) {this->p = p;}
		
	// for STL containers
	bool operator < (const thin_ptr& x) const	
	{_ASSERTE(p); _ASSERTE(x.p); return *p < *x.p;}
	
	bool operator!() const	{return p == 0;}
};

#endif //_thin_ptr_08dde7a2_d5d1_4fbb_a29e_9365fa1b04a8

⌨️ 快捷键说明

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