gpt4 book ai didi

c++ - 获取错误 C++ 即使拥有所有构造函数也没有匹配的调用函数

转载 作者:太空宇宙 更新时间:2023-11-04 13:14:42 25 4
gpt4 key购买 nike

我试图制作一个支持单位数字初始化和重载 * 运算符的 BigInt 库

我的构造函数“BigInt(int r[])”仍然“return BigInt(res)”不起作用,其中 res 在 int 数组中

感谢您的宝贵时间。

编译器错误“错误:没有匹配函数来调用‘BigInt::BigInt(BigInt)’ 返回 BigInt(res);"

这是我在 Qt Creator 中编译的代码

#include <iostream>

using namespace std;

class BigInt{
public:
int h[1000];

BigInt(){
for(int i=0; i<1000; i++) h[i] = -1;
}
BigInt(int n){
for(int i=0; i<1000; i++) h[i] = -1;
h[0] = n;

//Assuming single digit
}
BigInt(int r[]){
for(int i=0; i<1000; i++) h[i] = r[i];
}
BigInt(BigInt &b){
for(int i=0; i<1000; i++) h[i] = b.h[i];
}

BigInt operator*(int n){
int carry = 0;
int res[1000] = {-1};

int *a = &h[0];
int *b = &res[0];

while(1){

int unitDigit = n*(*a) + carry;
carry = unitDigit/10;
unitDigit %= 10;

*b = unitDigit;
b++;
a++;

if(*a == -1){
break;
}

}

while(carry){
int unitDigit = carry % 10;
*b = unitDigit;
carry /= 10;
b++;
}

return BigInt(res);
}

friend ostream& operator<<(ostream &out, BigInt &b){
int i;
for(i = 999; b.h[i] == -1; i--)
;

for(; i>=0; i--){
out<<b.h[i];
}

return out;
}
};

int main(){

int input;
cin>>input;

BigInt result(1);

for(int i=2; i<input; i++){
result = result*i;
}

cout<<result<<endl;
return 0;
}

最佳答案

你有一个构造函数

  BigInt(BigInt &b){
for(int i=0; i<1000; i++) h[i] = b.h[i];
}

这似乎不对。如果你想提供一个复制构造函数,参数需要是 const&

  BigInt(BigInt const&b){
for(int i=0; i<1000; i++) h[i] = b.h[i];
}

在我更改它之后,我能够使用您发布的代码构建程序。

关于c++ - 获取错误 C++ 即使拥有所有构造函数也没有匹配的调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37904694/

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