在Arduino的String类中重载+运算符

时间:2016-08-09 15:44:18

标签: c++ arduino operator-overloading

在Arduino String class中,+运算符多次重载。我将此代码移植到Silicon Labs EFM32部件(使用ARM GNU)并遇到问题。参考链接中的标题,这些线条让我感到悲伤:

friend StringSumHelper &operator+(const StringSumHelper &lhs, const String &rhs);
friend StringSumHelper &operator+(const StringSumHelper &lhs, const char *cstr);
friend StringSumHelper &operator+(const StringSumHelper &lhs, char c);
friend StringSumHelper &operator+(const StringSumHelper &lhs, unsigned char num);

friend StringSumHelper & operator + (const StringSumHelper &lhs, short num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned short num);

friend StringSumHelper & operator + (const StringSumHelper &lhs, int num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, long long num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long long num);

编译时,我得到以下两种错误类型:

C:\arduino_string.h:176:83: error: declaration of C function 'StringSumHelper& operator+(const StringSumHelper&, long long int)' conflicts with
 friend StringSumHelper & operator + (const StringSumHelper &lhs, long long num);

C:\arduino_string.h:155:29: error: previous declaration 'StringSumHelper& operator+(const StringSumHelper&, char)' here
 friend StringSumHelper &operator+(const StringSumHelper &lhs, char c);
                         ^

每次重载都会遇到一对错误。

我已经注释掉了整个相应的C ++文件。我还从标题中删除了#include <avr/pgmspace.h>,因为我没有使用此体系结构。

我没有多少使用friend方法,正如第一条评论所说,他们没有this指针,因此overload+有两个参数作为成员函数现在有意义。但在我看来,在编译期间实际情况可能并非如此?无论如何,我不知道问题是什么!

0 个答案:

没有答案