【问题标题】:Pointer to pointer is causing crash指向指针的指针导致崩溃
【发布时间】:2013-04-16 02:14:30
【问题描述】:

示例代码

sf::Drawable *mDrawables = new  sf::Shape(sf::Shape::Circle(-10, -10,5,sf::Color::Green));
Particle particle(mDrawables);


Particle::Particle(sf::Drawable *hum)
{
    *mDrawables = *hum;
}

根据我所做的缩小范围,我认为崩溃发生在这里的某个地方。一旦构造函数被调用,程序就会崩溃。有谁知道我在这里做错了什么?任何帮助将不胜感激。

【问题讨论】:

  • 发布完整代码。这并没有提供任何信息,只是说您肯定不想要那些语义。
  • mDrawables 是 Particle 的成员吗?现在看来是……
  • mDrawables 内部的Particle 构造函数...是成员变量吗?还是第一行的全局范围变量?
  • mDrawables 是 Particle 的成员,下面的帖子回答了我的问题。我在不应该的时候取消引用!

标签: c++ pointers constructor crash


【解决方案1】:

我没有看到指向指针的指针?

*mDrawables = *hum;

mDrawables 是一个指针,但是 *mDrawables 解引用了指针并且可能是类不可复制。

也许你应该试试这个

mDrawables = hum;

我也希望sf::Shape继承自sf::Drawable

【讨论】:

  • 做到了。我知道 sf::Shape 继承自 sf::Drawable,但我不知道我做错了什么哈哈。非常感谢! ;)
【解决方案2】:

您似乎用mDrawables 的内容(在Particle 构造函数中作为参数hum 的别名)覆盖了mDrawables 的内容。

*mDrawables = *hum 行应读作“将hum 的内容分配给mDrawables 的内容”。

很难说为什么这会导致崩溃;代码示例中没有足够的细节(我不知道你复制 Shape 时会做什么)。

我认为您可能需要在这里重新构建设计,但我无法说出您的总体意图,因此在这方面我无法给您任何好的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 2012-07-23
    相关资源
    最近更新 更多