复制构造函数与pch中的const成员函数冲突?一个gcc错误
Copy constructor conflicts with const member function in pch? A gcc bug?
我是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错误?
这是一个非常奇怪的错误。测试如果您内联操作员会发生什么:
FooClass operator -( void ) const
{
return FooClass();
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 我在C++中使用提升哈希函数将 3 个双精度组合成一个面临冲突的哈希
- 将 std::string 作为参数从一个 DLL 传递到另一个 DLL 引发访问冲突错误
- 尝试启动另一个进程并通过 MPI 加入它,但获得访问冲突
- 我的程序中有一个关于冲突的小错误
- int max(一个变量)和 int max(int ,int)之间没有冲突,这是 C++ 中的一个函数
- 复制构造函数与pch中的const成员函数冲突?一个gcc错误
- 当我在yacc中引入一个动作时,Shift/减少冲突
- 提振.线程访问冲突的一个简单例子
- Qt名称冲突,但no_keywords不是一个选项
- glMapBufferRange给了我一个访问冲突
- 一个奇怪的访问冲突错误