C++ 重载运算符<&书信电报;在自定义类中(单例)
我正在使用QT,我创建了我的自定义类(MyClass)作为SingletonC++ 重载运算符<&书信电报;在自定义类中(单例),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
//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");