在自定义 class 中重载运算符 <<(单例)

Overloading operator << in custom class (Singleton)

我正在使用 QT,我创建了我的自定义 class (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::getInstance()<<( QString("Tekst") );

但经过多次尝试 - 我不知道我应该怎么做。我尝试了很多方法,但我仍然只能得到 - 不正确的声明错误(在 MyClass.h 中)或

no match for 'operator<<' (operand types are 'MyClass*' and 'QString')

行:

 MyClass::getInstance()<<( QString("Tekst") );

编辑 1

基本上,我想用这个 class 来保存那些 QString。它应该类似于 QDebug,但我得到了我指定的 "place" 来保存它 - 尽管如此,输入数据的方式应该是相同的(使用 <<)。

编辑 2

很少有人争辩说我没有尝试编写此代码 - 以下是我的一些尝试(只是声明):

    MyClass  &operator<<(QString qds);
    //----
    MyClass* & operator<<(QString text);
    //----
    void  operator<<(QString rhs);
    //----
    MyClass*  operator<<(QString rhs);
    //----
    friend QString &operator<<(QString &input, const MyClass &mc );
    //----
     MyClass & operator<<(MyClass& out, const QString& text);

您可以在 class MyClass:

之外将运算符编写为函数
void operator<< (MyClass* myClass, QString string);

或者,您可以将调用更改为

(*MyClass::getInstance())<<( QString("Tekst") );

或者您可以更改 getInstance 使其return成为参考

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

在最后一种情况下,您将操作员编码为成员

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

或函数

void operator<< (MyClass& myClass, QString string);

您可以更改 return 类型,如果您想使用

MyClass::getInstance() << QString("Tekst") << QString("other Tekst");