操作符重载的问题!!急~~~

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:07:27
class OverOperator
{
public:
CString m_str;
/*实现部分*/

OverOperator(){}
virtual ~OverOperator(){}
};

OverOperator o;
o("A")="B";

我想通过o(str1)=str2;这种形式把str1+str2的结果送入o.m_str中,
请问大虾实现部分怎么写,能否通过重载操作符实现??
注:调用时一定是o(str1)=str2;这种形式。
分别重载()和=不行,o(str1)=str2这样调用时,=运算根本不参与
ASP中用ADO的Recordset对象有这种用法哦:rs("FieldName")=Value;
我是在VC中想封装自己的Recordset类,实现rs("FieldName")=Value;这种调用,传入2个参数。那么其他办法怎么实现呢??

#include<iostream>
#include<string>
using namespace std;
class OverOperator
{
public:
string mstr;
/*实现部分*/
OverOperator(){}
virtual ~OverOperator(){}
//可以先重载()
public:
OverOperator& operator()(string str){mstr=str;return *this;}
//再重载=
OverOperator& operator=(string str){mstr+=str;}
//最后别忘了return this;
};
int main()
{
OverOperator o;
o("A")="B";
cout<<o.mstr<<endl;
system("pause");
}

我只说一下算法,你自己想想看,我这边11:30停电

你重载一下()运算符,将这个函数的返回值设置为一个引用,返回的值是o对象的引用
然后再重载一下=运算符,在里面实现对两个字符串的加法,并返回回去

主要就是将()运算符的返回值设置为引用

怎么不行,好像是你不理解我的用意,就是在调用()运算符后,还能继续调用=运算符,这就跟COUT<<"AA"<<"BB";一样,可以连续调用几次,就是要返回类对象的引用,和<<的实现一样

我昨天是因为没时间写代码,cbk808已经给你写出来了,分你就给他吧,我无所谓

#include<iostream>
#include<string>
using n