重载的struct比较运算符无法正常工作

时间:2013-09-05 20:35:04

标签: visual-c++ struct operator-overloading

我一直在努力解决这个问题。我遇到了问题,我不太清楚为什么。我已经重载了我正在使用的结构的比较运算符,但它们似乎没有返回正确的结果。它没有任何模式。就像我将两个结构与相应的zLevels(zLevel是我正在比较的属性)的12和5进行比较一样,它会说12的结构小于5的结构。但是,它也表示具有值的结构。 11的值小于值为5的值。当使用==运算符时,它坚持没有比较的项具有相同的zLevel。

我的头文件如下

#include <SFML/Graphics.hpp>

#ifndef _LBMOON_DRAWABLE_H
#define _LBMOON_DRAWABLE_H

namespace LBMoon
{
    struct drawable
    {
        int id;
        float zLevel;
        sf::Sprite render;

        inline bool operator<(const drawable& other);
        inline bool operator>(const drawable& other);
        inline bool operator==(const drawable& other);
        inline bool operator!=(const drawable& other);
    };

}

#endif

和我的cpp文件如下

#include "drawable.h"

namespace LBMoon
{
    inline bool drawable::operator<(const drawable& other) {
        return zLevel < other.zLevel;
    }

    inline bool drawable::operator>(const drawable& other) {
        return zLevel > other.zLevel;
    }

    inline bool drawable::operator==(const drawable& other) {
        return zLevel == other.zLevel;
    }

    inline bool drawable::operator!=(const drawable& other) {
        return zLevel != other.zLevel;
    }
}

感谢您阅读本文。我真的不知道发生了什么,并希望得到任何帮助我可以获得x.x

0 个答案:

没有答案