i64vec2拷贝构造函数突然开始腐败的东西

时间:2015-09-24 17:35:06

标签: c++ glm-math

好的,对不起。看起来Visual Studio只是疯了,价值真的很好。至于为什么会发生这种情况,什么时候发生,我不知道。

最后有一个完整的样本,我想知道它是否也为你做了这件事。尝试使用x86和x64版本,然后查看调试器所说的值。

也许这是一件好事,现在我不会错过不必要的复制。

我觉得这很奇怪。每当我复制一个glm :: i64vec2时,它就会被破坏。

但如果我这样做:

glm::i64vec2 copy(glm::i64vec2(1, 1));

在我的主体,它只是有效。 我已删除所有目标文件并从头开始重建程序..任何想法可能出错?

我唯一能想到的是,我在不同的地方以不同的顺序包含了标题,并且不知何故搞砸了。

我真正应该使用的是const引用,但这仍然让我感到害怕。其中一个很容易隐藏起来作为一个bug,给我带来很多麻烦。

Fine

!Fine

我刚刚发现了另一个导致的错误。这次它发生在一个单独的类中。

这失败了,但在主

中也是如此
bool test(glm::i64vec2 p_worldPos)
{
  return p_worldPos.x == 1;
}

void QuadTree::getObjectsHitInPriority(glm::i64vec2 const & p_worldPos, std::vector<Object*> & p_objects)
{
  test(p_worldPos);
嗯,我不知道这意味着什么,但是已经做了以下观察。在我的程序main.cpp中,这失败了

#include <glm/glm.hpp>
#include <iostream>

struct whatthehell
{
    bool test(glm::u64vec2 p_test)
    {
        return p_test.x == 1;
    }
};

int main(int argc, char ** argv)
{
    whatthehell hell;

    if (hell.test(glm::u64vec2(1, 1)) == false)
    {
        std::cout << "What the hell\n";
    }

    return 0;
}

好的,更新。这适用于x86,但不适用于x64和我的VS2015。任何人都可以测试这个吗?

0 个答案:

没有答案