通用堆栈实现C ++,如果堆栈为空,返回什么?

时间:2014-11-09 09:54:41

标签: c++ templates error-handling

我为练习写了一个通用堆栈。问题是我应该在堆栈空的情况下返回什么类型。我想到的第一件事就是返回-1:

   U pop_back()
    {
        if (m_pos <= 0)
        {
            std::cout << "Stack <pop_back> No element in stack will return default " << std::endl;
            return -1;
        }
        return m_data[m_pos--];
    }

但这会将我的通用容器限制为整数类型。并且-1也可以是整数类型的数据而不是错误。 我脑海中的其他选项处理异常或默认ctors的错误。

请告诉我在这种情况下返回错误的最佳方法。

下面可以看到整个代码。

template <typename U, std::size_t n>
class Stack
{
public:
    Stack()
    {
        m_pos = -1;
    }


    U pop_back()
    {
        if (m_pos <= 0)
        {
            std::cout << "Stack <pop_back> No element in stack will return default " << std::endl;
            return -1;
        }
        return m_data[m_pos--];
    }

    void push_back(U val)
    {
        if (m_pos >= m_data.size())
        {
            std::cout << " Stack <push_back> Capasity is full won't add more" << std::endl;
            return;
        }
        m_data[++m_pos] = val;
    }

private:

    int m_pos;
    std::array<U, n> m_data;
};

0 个答案:

没有答案