'const char*' 类型的参数与 'char*' 类型的参数不兼容
Argument of type 'const char*' is incompatible with parameter of type 'char*'
在运算符重载函数中,我使用了另一个复制数组的函数。但是当我调用函数 arrayCopy() 时,我收到一条错误消息:
'const char*' 类型的参数与 'char*' 类型的参数不兼容。
有什么原因和解决这个问题的方法吗?
class InfinateInteger {
public:
InfinateInteger();
InfinateInteger(char c[]);
int* digitBreakDown(int c);
int digitLength(int c);
void intConversion(char stringArray[], int convertArray[], int size, int printQ);
void arrayCopy(char originalArray[], char copyArray[], int size);
const InfinateInteger operator +(const InfinateInteger& sec);
char * getIntString(); //getters
int getDigitL();
void setIntString(char newStr[]); //setters
void setDigitL(int length);
private:
char intString[1000000];
int posNeg = 1; //if pos ==1 if neg ==0
int digitL = 0;
};
const InfinateInteger InfinateInteger:: operator +(const InfinateInteger& sec) {
//function in which error is occurring
char str1[1000000];
arrayCopy(intString, str1, getDigitL());
char str2[1000000];
arrayCopy(sec.intString, str2, getDigitL()); //<--line where error occurs!!!!!
return InfinateInteger();
}
void InfinateInteger::arrayCopy(char originalArray[], char copyArray[], int size) {
for (int i = 0; i < size; i++) {
copyArray[i] = originalArray[i];
}
}
调用arrayCopy
的函数定义如下:
const InfinateInteger InfinateInteger:: operator +(const InfinateInteger& sec) {
可以看到sec
被限定为const
,也就是说sec.intString
也是const
.
另一方面,arrayCopy
定义为
void InfinateInteger::arrayCopy(char originalArray[], char copyArray[], int size) {
originalArray
不是 const
,这就是您收到错误的原因。
将arrayCopy
改为
void InfinateInteger::arrayCopy(const char originalArray[], char copyArray[], int size) {
在运算符重载函数中,我使用了另一个复制数组的函数。但是当我调用函数 arrayCopy() 时,我收到一条错误消息:
'const char*' 类型的参数与 'char*' 类型的参数不兼容。
有什么原因和解决这个问题的方法吗?
class InfinateInteger {
public:
InfinateInteger();
InfinateInteger(char c[]);
int* digitBreakDown(int c);
int digitLength(int c);
void intConversion(char stringArray[], int convertArray[], int size, int printQ);
void arrayCopy(char originalArray[], char copyArray[], int size);
const InfinateInteger operator +(const InfinateInteger& sec);
char * getIntString(); //getters
int getDigitL();
void setIntString(char newStr[]); //setters
void setDigitL(int length);
private:
char intString[1000000];
int posNeg = 1; //if pos ==1 if neg ==0
int digitL = 0;
};
const InfinateInteger InfinateInteger:: operator +(const InfinateInteger& sec) {
//function in which error is occurring
char str1[1000000];
arrayCopy(intString, str1, getDigitL());
char str2[1000000];
arrayCopy(sec.intString, str2, getDigitL()); //<--line where error occurs!!!!!
return InfinateInteger();
}
void InfinateInteger::arrayCopy(char originalArray[], char copyArray[], int size) {
for (int i = 0; i < size; i++) {
copyArray[i] = originalArray[i];
}
}
调用arrayCopy
的函数定义如下:
const InfinateInteger InfinateInteger:: operator +(const InfinateInteger& sec) {
可以看到sec
被限定为const
,也就是说sec.intString
也是const
.
arrayCopy
定义为
void InfinateInteger::arrayCopy(char originalArray[], char copyArray[], int size) {
originalArray
不是 const
,这就是您收到错误的原因。
将arrayCopy
改为
void InfinateInteger::arrayCopy(const char originalArray[], char copyArray[], int size) {