我正在使用QT,并以Singleton创建了自定义类(MyClass)。

//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中)或


  与'operator <

对于行:

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


编辑1

基本上,我想使用此类保存这些QString。它应该类似于QDebug,但是我得到了指定的“位置”来保存它-仍然,输入数据的方式应该是相同的(<
编辑2

Sicne的一些人说我没有尝试编写此代码-这是我的一些尝试(仅声明):

    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);

最佳答案

您可以在类MyClass之外将运算符写为函数:

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


或者,您可以将呼叫更改为

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


或者您可以更改getInstance,使其返回引用

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");

关于c++ - 自定义类中的重载运算符<< <<(Singleton),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35629356/

10-13 07:06