C++ 重载运算符<&书信电报;在自定义类中(单例)

C++ 重载运算符<&书信电报;在自定义类中(单例),c++,qt,operator-overloading,C++,Qt,Operator Overloading,我正在使用QT,我创建了我的自定义类(MyClass)作为Singleton //MyClass.cpp MyClass(){} MyClass* MyClass::getInstance() { if(!instance) instance = new MyClass(); return instance; } //MyClass.h public: static MyClass* getInstance(); private: My

我正在使用QT,我创建了我的自定义类(MyClass)作为Singleton

//MyClass.cpp

MyClass(){}

MyClass* MyClass::getInstance()
{
    if(!instance)
        instance = new MyClass();
    return instance;
}


//MyClass.h

public:
    static MyClass* getInstance();

private:
    MyClass();
    static MyClass* instance;

现在我需要重载运算符“您可以将运算符作为函数写入MyClass之外的类:

void operator<< (MyClass* myClass, QString string);
在最后一种情况下,将运算符编码为成员

void MyClass::operator<< (QString string);

void MyClass::operator您可以将运算符作为函数写入类MyClass之外:

void operator<< (MyClass* myClass, QString string);
在最后一种情况下,将运算符编码为成员

void MyClass::operator<< (QString string);

void MyClass::operator你的
操作符是怎么回事?我只为它编写了代码。看来我并没有“定义”它。我认为所有类基本上都可以为oeprator使用重载,就像在这个例子中一样:它们可以,但你必须编写代码来重载操作符。看看它们是如何编写函数
Box operator+(const-Box&b)
允许您使用
+
将两个框添加到一起。正如我所写的-我做了很多尝试,但都没有找到正确的地方-这就是我在这里提问的原因。Exemp.:MyClass&Operator注意编译器参数应为(操作数类型为'MyClass*'和'QString')。您的
运算符如何?我为它编写了所有代码。我没有“定义”“不管怎么说,似乎是这样。我认为所有类基本上都可以对oeprator使用重载,就像在这个例子中:它们可以,但是您必须编写代码来重载操作符。看看他们是如何编写函数
Box operator+(const-Box&b)
,允许您使用
+
将两个框添加到一起的。正如我所写的,我做了很多尝试,但没有一个是正确的,这就是为什么我在这里问这个问题。Exemp.:MyClass&Operator注意编译器期望参数是什么(操作数类型为'MyClass*'和'QString')。@songyuanyao:取决于它的功能,但可能是。我改了。谢谢你的帮助。原来我最大的错误是试图在操作上进行声明和定义。@songyuanyao:这取决于它的功能,但可能是的。我改了。谢谢你的帮助。事实证明,我最大的错误是试图在操作中声明和定义。
(*MyClass::getInstance())<<( QString("Tekst") );
MyClass& MyClass::getInstance()
{
    if(!instance)
        instance = new MyClass();
    return *instance;
}
void MyClass::operator<< (QString string);
void operator<< (MyClass& myClass, QString string);
MyClass::getInstance() << QString("Tekst") << QString("other Tekst");