Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
顺手翻了下3d游戏引擎设计实时计算机图形学的应用方法这本书(英文本第二版)
在其800page.18.4章的
template<class T>
class Stack中这儿有一个小错误
就是
在函数
bool Push..
中间 其判断条件是错误的
对于这个类模板
我把它成了了盖莫引擎死板的风格
如下:
///////////////////////////////////////////////////////////
/// 定义引擎栈模板类
///////////////////////////////////////////////////////////
template<class T>
class Stack : NonCopyable
{
public:
    
///////////////////////////////////////////////////////
    
/// 构造,析构栈模板
    
///////////////////////////////////////////////////////
    Stack(int maxsize);
    
~Stack();
public:     
    
///////////////////////////////////////////////////////
    
/// 数据入栈
    
///////////////////////////////////////////////////////
    bool Push(const T& element);
    
    
///////////////////////////////////////////////////////
    
/// 数据出栈
    
///////////////////////////////////////////////////////    
    bool Pop(T& element);
    
    
//////////////////////////////////////////////////////////
    
/// 获取栈顶元素
    
//////////////////////////////////////////////////////////     
    bool GetTop(T& element)const;
                
    
///////////////////////////////////////////////////////
    
/// 检查栈是否为空栈,满栈
    
///////////////////////////////////////////////////////    
    bool IsEmpty()const;
    
bool IsFull()const;
private:
    
int  maxsize;
    
int  top;
    T
*   data;    
};

#include 
<GEngine/Template/Stack.inl>
in stack.inl
///////////////////////////////////////////////////////
/// 构造,析构栈模板
///////////////////////////////////////////////////////
template<class T>
Stack
<T>::Stack(int maxsize):
top(
-1)
{
    ASSERT(maxsize 
> 0);
    
this->maxsize = maxsize;
    data 
= new T[this->maxsize];    
}

template
<class T>
Stack
<T>::~Stack()
{
    CHECK_PTR_ARRAY_AND_DELETE(data);
}
     
///////////////////////////////////////////////////////
/// 数据入栈
///////////////////////////////////////////////////////
template<class T>
inline 
bool Stack<T>::Push(const T& element)
{
    
if(top < maxsize-1)
    {
        data[
++top] = element;
        
return true
    }
    
return false;
}
    
///////////////////////////////////////////////////////
/// 数据出栈
///////////////////////////////////////////////////////    
template<class T>
inline 
bool Stack<T>::Pop(T& element)
{
    
if(top >=0)
    {
        element 
= data[top--];
        
return true;
    }
    
return false;
}
    
//////////////////////////////////////////////////////////
/// 获取栈顶元素
//////////////////////////////////////////////////////////     
template<class T>
inline 
bool Stack<T>::GetTop(T& element)const
{
    
if(top >= 0)
    {
        element 
= data[top];
        
return true
    }
    
return false;
}
                
///////////////////////////////////////////////////////
/// 检查栈是否为空栈,满栈
///////////////////////////////////////////////////////    
template<class T>
inline 
bool Stack<T>::IsEmpty()const
{
    
return top == -1;
}

template
<class T>
inline 
bool Stack<T>::IsFull()const
{
    
return top == maxsize-1;
}
    
    
    
    
    
    

posted on 2010-04-23 19:11 ccsdu2009 阅读(386) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理