我正在尝试从Cryptosuite for Arduino编译一个示例。我收到此错误:
In file included from sha1test.pde:1:
C:\Program Files (x86)\Arduino\libraries\Sha/sha1.h:26: error: conflicting return type specified for 'virtual void Sha1Class::write(uint8_t)'
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)'
Run Code Online (Sandbox Code Playgroud)
检查 sha1.h 文件的该行我得到:
virtual void write(uint8_t);
Run Code Online (Sandbox Code Playgroud)
我相信期待不同类型的变量,但我不知道如何解决这个问题。
重写函数的返回类型为void,而被重写函数的返回类型为size_t。这是非法的。根据标准,“重写函数的返回类型应与被重写函数的返回类型相同,或者与函数的类协变”(C++ 10.3.5,该标准的 2003 和 2011 版本)。
该标准继续讨论返回类型“协变”的含义。这与类的指针和引用有关。我的建议:采取简单的方法并始终使返回类型相同。然后,您不必担心重写和重写虚函数的返回类型是否协变。
在这种情况下,void和size_t既不相同也不协变。
| 归档时间: |
|
| 查看次数: |
13509 次 |
| 最近记录: |