我一直在尝试编写这个C ++程序,以便在运算符(+ =)上使用运算符重载来连接用户输入的字符串。我已经定义了构造函数来初始化对象以及将字符串作为参数。但它仍然显示错误
错误:无法匹配'(concat)(std :: string&)' |
这里是3个文件的代码=> 的的main.cpp
#include <iostream>
#include "concat.h"
#include<string>
using namespace std;
int main()
{
concat ob[10];
concat result;
int i;
string ip;
cout<<"Enter the strings upto 10 in different lines.. \n";
for(i=0;i<(sizeof(ob)/sizeof(ob[0]));i++){
cin>>ip;
ob[i](ip);
}
while(i!=0){
result += ob[i++];
}
cout<<result.input;
}
concat.h
#ifndef CONCAT_H
#define CONCAT_H
#include<string>
using namespace std;
class concat
{
public:
string input;
concat();
concat(string ip);
concat operator+=(concat );
};
#endif // CONCAT_H
concat.cpp
#include <iostream>
#include "concat.h"
#include<string>
using namespace std;
concat::concat(){
}
concat::concat(string ip)
:input(ip)
{
}
concat concat::operator+=(concat ipObj){
this->input += ipObj.input;
return *this;
}
答案 0 :(得分:1)
这就是你的concat
类原型应该是这样的:
class concat
{
public:
string input;
concat() = default;
concat& operator+=(const concat&);
// assignment operator
concat& operator=(const string& str) {
input = str;
return *this;
}
};
然后使用ob[i] = ip;
代替ob[i](ip)
。
此外,您的程序崩溃是因为您写了result += ob[i++];
而不是result += ob[--i];