Конфликт типов для перегрузки операторов (XCode 5.0)

Часть кода из моей математической библиотеки C ++ перестала работать с момента обновления до XCode 5.0.

Он объявляет некоторые функции перегрузки операторов, которые реагируют по-разному в зависимости от передаваемых типов параметров. Вот код (все в файле .h):

#ifndef __RMKit__RMVector3f__
#define __RMKit__RMVector3f__

#include <stdbool.h>
#include <math.h>

#ifdef __cplusplus
extern "C" {//start extern "C"#endif

union _RMVector3f {
struct {float x,y,z;};
struct {float r,g,b;};
struct {float s,t,p;};
float v[3];
};
typedef union _RMVector3f RMVector3f;

#pragma mark - math operator overloads prototypes
#ifdef __cplusplus //only declare operator overloads if using C++
static __inline__ RMVector3f operator + (RMVector3f lhs, RMVector3f rhs);
static __inline__ RMVector3f operator + (RMVector3f lhs, float rhs);
static __inline__ RMVector3f operator - (RMVector3f lhs, RMVector3f rhs);
static __inline__ RMVector3f operator - (RMVector3f lhs, float rhs);

#pragma mark - math operator overload implementations
static __inline__ RMVector3f operator + (RMVector3f lhs, RMVector3f rhs)
{
RMVector3f tmp;
tmp.x = lhs.x+rhs.x;
tmp.y = lhs.y+rhs.y;
tmp.z = lhs.z+rhs.z;
return tmp;
}

static __inline__ RMVector3f operator + (RMVector3f lhs, float rhs)
{
RMVector3f tmp;
tmp.x = lhs.x+rhs;
tmp.y = lhs.y+rhs;
tmp.z = lhs.z+rhs;
return tmp;
}

static __inline__ RMVector3f operator - (RMVector3f lhs, RMVector3f rhs)
{
RMVector3f tmp;
tmp.x = lhs.x-rhs.x;
tmp.y = lhs.y-rhs.y;
tmp.z = lhs.z-rhs.z;
return tmp;
}

static __inline__ RMVector3f operator - (RMVector3f lhs, float rhs)
{
RMVector3f tmp;
tmp.x = lhs.x-rhs;
tmp.y = lhs.y-rhs;
tmp.z = lhs.z-rhs;
return tmp;
}
#endif

#ifdef __cplusplus
}//end extern "C"#endif

#endif /* defined(__RMKit__RMVector3f__) */

Компилятор (LLVM 5.0) выдает мне такие ошибки, как:

Conflicting types for 'operator+'
Conflicting types for 'operator-'

Что я могу сделать, чтобы исправить эту проблему?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector