0

我对这样的运算符重载有点陌生。非常简单的代码:

#ifndef QTRIGONOMETRY_H
#define QTRIGONOMETRY_H

struct Real
{
    double m;
};

double operator-( int n, const Real m ) { return n - m.m; }

#endif // QTRIGONOMETRY_H

出于某种原因,这给了我这个错误:

compiling sandbox.cpp [sandbox]
compiling qtrigonometry.cpp [sandbox]
linking sandbox [sandbox]
/usr/bin/g++ -Wl,-m,elf_x86_64,-rpath-link=/home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/qunicodetoolkit.5058107a -m64 -o /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/sandbox.9ed037b8/sandbox /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/sandbox.9ed037b8/3a52ce780950d4d9/download.cpp.o /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/sandbox.9ed037b8/3a52ce780950d4d9/playingcard.cpp.o /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/sandbox.9ed037b8/3a52ce780950d4d9/qblock.cpp.o /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/sandbox.9ed037b8/3a52ce780950d4d9/qtrigonometry.cpp.o /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/sandbox.9ed037b8/3a52ce780950d4d9/sandbox.cpp.o /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/sandbox.9ed037b8/73489b871e127538/moc_download.cpp.o /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/sandbox.9ed037b8/73489b871e127538/moc_qblock.cpp.o /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/sandbox.9ed037b8/73489b871e127538/moc_qdatastore.cpp.o /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/qnetworktoolkit.9eecad35/libqnetworktoolkit.so /usr/lib/libQt5WebEngineWidgets.so.5.15.6 /usr/lib/libQt5WebEngineCore.so.5.15.6 /usr/lib/libQt5WebChannel.so.5.15.2 /usr/lib/libQt5Quick.so.5.15.2 /usr/lib/libQt5QmlModels.so.5.15.2 /usr/lib/libQt5Qml.so.5.15.2 /usr/lib/libQt5PrintSupport.so.5.15.2 /usr/lib/libQt5Widgets.so.5.15.2 /usr/lib/libQt5Positioning.so.5.15.2 /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/qparsingtoolkit.8ad6b1b1/libqparsingtoolkit.so /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/qfiletoolkit.db3d638f/libqfiletoolkit.so /usr/lib/libQt5Sql.so.5.15.2 /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/qconsoletoolkit.e2e8cc1e/libqconsoletoolkit.so /usr/lib/libQt5Network.so.5.15.2 /usr/lib/libQt5Gui.so.5.15.2 /usr/lib/libQt5Core.so.5.15.2 /home/anon/.local/usr/lib/libqnetworktoolkit.so /home/anon/.local/usr/lib/libqfiletoolkit.so /home/anon/.local/usr/lib/libqconsoletoolkit.so /home/anon/.local/usr/lib/libqunicodetoolkit.so /home/anon/.local/usr/lib/libqparsingtoolkit.so /usr/lib/libQt5WebEngineCore.so /usr/lib/libQt5PrintSupport.so /usr/lib/libQt5Quick.so /usr/lib/libQt5WebChannel.so /usr/lib/libQt5Positioning.so /usr/lib/libQt5QmlModels.so /usr/lib/libQt5Qml.so /usr/lib/libQt5Network.so /usr/lib/libQt5Widgets.so /usr/lib/libQt5Gui.so /usr/lib/libQt5Core.so -lpthread
/usr/bin/ld: /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/sandbox.9ed037b8/3a52ce780950d4d9/sandbox.cpp.o: in function `QTypedArrayData<unsigned short>::sharedNull()':
/home/anon/Programming/QtConsoleDesigner/qtrigonometry.h:9: multiple definition of `operator-(int, Real)'; /home/anon/Builds/build-QConsoleDesigner-Desktop-Debug/Debug_Desktop_038b678e9426a45b/sandbox.9ed037b8/3a52ce780950d4d9/qtrigonometry.cpp.o:/home/anon/Programming/QtConsoleDesigner/qtrigonometry.h:9: first defined here
collect2: error: ld returned 1 exit status
Process failed with exit code 1.
The following products could not be built for configuration Debug_Desktop_038b678e9426a45b:
sandbox
Error while building/deploying project QConsoleDesigner (kit: Desktop)
When executing step "Qbs Build"
01:19:32: Elapsed time: 00:06.

Clang 没有发现任何错误。它只在编译时弹出。

这里发生了什么?

4

0 回答 0