C++:没有匹配调用'(concat) (std::string&)'

C++: no match for call to '(concat) (std::string&)'

本文关键字:std string concat C++ 调用      更新时间:2023-10-16

我一直在尝试编写这个C++程序,以使用运算符(+=(上的运算符重载连接作为用户输入的字符串。我已经定义了构造函数来初始化对象以及将字符串作为参数。但它仍然显示错误

错误:对"(连接((标准::字符串&("的调用不匹配|

这是 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;
}

康卡特·

#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

康卡特.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;
}

这就是你的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];