оператор перегрузки GLM для использования в карте не работает - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь использовать glm :: vec2 для ввода std :: map , но у меня есть эта ошибка:

Код серьезности Описание Файл проектаОшибка состояния подавления строки C2678 двоичный файл «<»: не найден оператор, который принимает левый операнд типа «const glm :: vec2» (или нет допустимого преобразования) VoxelEngine C: \ Program Files (x86) \ Microsoft Visual Studio14.0 \ VC \ include \ xstddef 239 </p>

После поиска в Google я обнаружил, что мне нужен оператор перегрузки, я попробую использовать это:

bool operator<(const glm::vec2& lhs, const glm::vec2& rhs)
{
    return lhs.x + lhs.y < rhs.x + rhs.y;
}

Это мой tools.h

#pragma once
#include <gl/glew.h>
#include <SFML/Window.hpp>
#include <SFML/OpenGL.hpp>

#include <string>
#include <fstream>
#include <iostream>
#include <math.h>


#include <..\glm/glm.hpp>
#include <..\glm/vec4.hpp>
#include <..\glm/mat4x4.hpp>
#include <..\glm/trigonometric.hpp>
// Include GLM extensions
#include <..\glm/gtc/matrix_transform.hpp>
#include <..\glm/gtc/type_ptr.hpp>
#include <..\glm/gtc/matrix_transform.hpp>
using namespace glm;
using namespace std;
bool operator<(const glm::vec2& lhs, const glm::vec2& rhs);
#include <map>

Но это не исправляет мою ошибку, как я могу перегрузить оператор?

1 Ответ

0 голосов
/ 26 апреля 2018

Я нашел проблему, мне просто нужно использовать перегрузку в хорошем пространстве имен, в моем заголовке мне нужно использовать:

namespace glm {
    bool operator <(const glm::vec2& l, const glm::vec2& r);
    bool operator ==(const glm::vec2& l, const glm::vec2& r);
}

Спасибо за ответ

...