我正在使用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/