gpt4 book ai didi

c++ - 复制构造函数与 pch 中的 const 成员函数冲突?海湾合作委员会的错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:18 25 4
gpt4 key购买 nike

我是 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();
}

关于c++ - 复制构造函数与 pch 中的 const 成员函数冲突?海湾合作委员会的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18079380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com