gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:10:13 24 4
gpt4 key购买 nike

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

error: no match for call to '(concat) (std::string&)'|

这是 3 个文件的代码=>ma​​in.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;
}

最佳答案

这就是您的 concat 类原型(prototype)的外观:

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];

关于C++: 不匹配调用 '(concat) (std::string&)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45782355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com