How to use QCOMPARE with two custom classes within custom namespace?

285 Views Asked by At

I have a class MyClass within a namespace MyNameSpace, and I define a == operator in test unit, so, classes could be copmared.

The unit test doesn' compile 'cause theres no operator == match for const MyNameSpace Myclass, MyNamespace MyClass, even if I have it in unit test.

Without using a namespace works as expected.

Lets say we have:

namespace MyNamespace {
class MyClass {
public :
    QString a;
};
}

and in test unit:

....
#include "myclass.h"
using namespace MyNamespace;
....

test_case1 {
    MyClass myClass;
    myClass.a = "test";

    MyClass myClass2;
    myClass2.a = "test";

    QCOMPARE(myClass, myClass2); //Fails to compile 
}

operator==(const MyNamespace::MyClass &class1, const MyNamespace::MyClass &class2) {
    return (class1.a == class2.a);
}
1

There are 1 best solutions below

3
On

I solved by wrapping the definition of operator == into std namespace

namespace std {
    bool operator==(const MyNamespace::MyClass class1, const MyNamespace::MyClass class2)
    {
        return (class1.a == class2.a);       
    }
}