Ошибка связи с действительно простыми функциями C ++ в файле .h

Я сделал две функции для «приведения» 32 / 64-битный указатель на двойной. Код работал, когда использовался отдельно (только .h и .cpp, включая его), но при использовании .h где-то еще (скопирован в каталог проекта и затем включен) ith выдает ошибку «уже определено» для всех функций в файле .h при связывании.

исходный код для файла .h следующий:

#pragma once
#ifndef __FLOATCAST_H
#define __FLOATCAST_H

//A quick and dirty way of casting pointers into doubles and back
//Should work with BOTH 64bit and 32bit pointers
union ptr_u {
    double d;
    void* p;
};

double ptr2double(void* pv){
    ptr_u ptr;
    ptr.p = pv;
    return (ptr.d);
};

void* double2ptr(double dv){
    ptr_u ptr;
    ptr.d = dv;
    return(ptr.p);
};

#endif

В ссылке говорится, что функции уже определены в исходном файле файла (скорее, его .obj) который не включает этот.

Изменить: Зачем мне нужен указатель внутри двойника? Потому что мне нужен Lua (5.1) для обратного вызова функции-члена объекта.

Edit2: Lua предоставляет способ хранения пользовательских данных, это похоже на адекватное решение, а не на приведение указателя (см. Комментарии)

5
задан NeonMan 21 June 2011 в 12:33
поделиться