Конструктор копирования конфликтует с функцией-членом const в pch? GCC ошибка?

Я новичок в gcc и столкнулся с действительно странной проблемой при компиляции предварительно скомпилированного заголовка в gcc-4.7.2 / 4.7.3.

Коды ниже:

FooClass.h

#include <cstddef>
#include <X11/X.h>
#include <xmmintrin.h>
#include <emmintrin.h>
#include <smmintrin.h>

#ifndef FOO_CLASS_ERROR
#define FOO_CLASS_ERROR

class FooClass
{
public:
union
{
struct
{
float x,y,z,w;
};
__m128 v;
};

FooClass( void )
{
}

FooClass( const __m128 _v )
: v( _v )
{
}

FooClass( const FooClass& rhs )
: v( rhs.v )
{
}

FooClass operator -( void ) const;

} __attribute__( (aligned(16)) );

#endif

FooClass.cpp

#include "FooClass.h"
FooClass FooClass::operator -( void ) const
{
return FooClass();
}

составлено как pch:

g++ -Wall -fexceptions -g -msse4.1 -Winvalid-pch -include "FooClass.h"  -c FooClass.h -o FooClass.h.gch
g++ -Wall -fexceptions -g -msse4.1 -Winvalid-pch -include "FooClass.h"  -c FooClass.cpp -o obj/Debug/FooClass.o

будет генерировать ошибки:

./pch.h:40:17: error: prototype for ‘FooClass FooClass::operator-() const’ does not match any in class ‘FooClass’
./pch.h:36:14: error: candidate is: FooClass FooClass::operator-() const

Я проверил весь день и обнаружил, что:

Удаление «const» или конструктора копирования решит эти ошибки.

Но я не знаю почему … Может кто-нибудь сказать мне причину, которая вызывает эту ошибку? или может это ошибка gcc?

5

Решение

Это очень странная ошибка. Проверьте, что произойдет, если вы включите оператор:

FooClass operator -( void ) const
{
return FooClass();
}
0

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

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

По вопросам рекламы [email protected]