Guida Soluzione compilazione vid con boost 1.47+

Arves100

Utente Emerald
15 Febbraio 2011
515
46
378
418
Ultima modifica:
Buongiorno, un bugfix che rilasciai nel 2016 o 2017 (forse anche qui non ricordo).
Succede generalmente su sorgenti vergini quando cerchi di compilare con Boost > 1.43.

File game/src/vid.h cambiare tutto il contenuto in questo
Codice:
#ifndef __INC_METIN_II_VID_H__
#define __INC_METIN_II_VID_H__

class VID
{
    public:
        VID() : m_id(0), m_crc(0)
        {
        }

        VID(DWORD id, DWORD crc)
        {
            m_id = id;
            m_crc = crc;
        }

        VID(const VID &rvid)
        {
            *this = rvid;
        }

        const VID & operator = (const VID & rhs)
        {
            m_id = rhs.m_id;
            m_crc = rhs.m_crc;
            return *this;
        }

        bool operator == (const VID & rhs) const
        {
            return (m_id == rhs.m_id) && (m_crc == rhs.m_crc);
        }

        bool operator != (const VID & rhs) const
        {
            return !(*this == rhs);
        }

        operator DWORD() const
        {
            return m_id;
        }

        void Reset()
        {
            m_id = 0, m_crc = 0;
        }

        DWORD getID()  const {
            return m_id;
        }

    private:
        DWORD m_id;
        DWORD m_crc;
};

extern std::size_t hash_value(VID const& v);

#endif

Creare un nuovo file chiamato vid.cpp e incollare questo
Codice:
#include "stdafx.h"
#include "vid.h"
#include <boost/functional/hash.hpp>

// 16.06.2016 Soluzione dell'Hash della classe VID || Arves100 ||
std::size_t hash_value(VID const& v) {
    boost::hash<DWORD> hasher;
    return hasher(v.getID());
}

Quello che faccio qui, è creare una definizione per calcolare l'hash di vid (fatto in maniera veloce), una altra possibile, e forse più funzionale, modifica sarebbe quella di cambiare boost::unordered_map con std::unordered_map (però std::unordered_map è disponibile solo su C++11 o superiore).

è necessario aggiungere vid.cpp nel proprio progetto di Visual Studio e nel proprio makefile.

Buona fortuna.
 
  • Mi piace
Reazioni: Toki.San