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

标签 c++ arrays char copy constants

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

相关文章:

java - 任意维度的数组作为方法参数

c++ - 逐字读取输入文件

c++ - Qt - 使用绝对位置将项目添加到 QGraphicsScene

c++ - 我想在 opengl 中将图像包裹在一个球体周围

arrays - 在给定的 0's and 1' s 方阵中寻找 1 的最大方子矩阵?

PHP 警告 : array_filter() expects parameter 2 to be a valid callback, 第二个数组成员不是有效方法

c - while 循环,从 scanf 读取 int 与 char,true 和 false

C++。将符号行读入字符数组/vector 的最快方法

java - 无法正确计算字符数

c++ - 为什么 C++ 编译器不能知道指针指向派生类?