【发布时间】:2014-03-28 11:45:31
【问题描述】:
我有一个给我带来麻烦的方法。我收到分段错误错误。我通过 gdb 进行了测试,发现问题出在以下方法 shoppingList 数组包含指向 Product 类对象的指针。 我在这里要做的是添加一个项目,我遍历数组,直到找到一个 nullptr 或空白空间。数组的大小为 20,最初使用构造函数将其全部设置为 nullptr。 数量=20 数组在 CustomerOrder.h 中的样子
public:
static const size_t number = 20;
private:
std::array<Product*, number> shoppingList;
我是如何在构造函数中初始化它的:
CustomerOrder::CustomerOrder()
: shoppingList()
{
}
这就是问题方法。
void CustomerOrder::addItem(Product *p)
{
bool space = false;
int counter=0;
while(space==false || counter < 20 )
{
if(shoppingList[counter] == nullptr )
{
shoppingList[counter] = p;
space == true;
}
counter++;
}
【问题讨论】:
-
space == true没有将 true 分配给空间。它只是比较它。你的意思可能是space = true? -
我认为大多数编译器都会对
space == true;发出警告。是否启用了警告? -
除了答案和 Rosme 所说的之外,您可以通过将条件更改为
while(counter < 20)而不是space = true;来使循环变得更简单(在我看来),而不是break.这样你就不需要space变量了。
标签: c++ arrays error-handling