我为练习写了一个通用堆栈。问题是我应该在堆栈空的情况下返回什么类型。我想到的第一件事就是返回-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;
};