gpt4 book ai didi

c++ - 类型 'const char*' 的参数与类型 'char*' 的参数不兼容

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:44 25 4
gpt4 key购买 nike

在运算符重载函数中,我使用了另一个复制数组的函数。但是当我调用函数 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) {

关于c++ - 类型 'const char*' 的参数与类型 'char*' 的参数不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35286953/

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