ungültige Konvertierung von 'const int*' to 'int*'

Erhalte ich die folgende Fehlermeldung

$ g++ test.cpp
test.cpp: In function int test1(const int**, int)’:
test.cpp:11:14: error: invalid conversion from const int*’ to int*’ [-fpermissive]
         a=v[i];
              ^
test.cpp: In function int main()’:
test.cpp:31:20: error: invalid conversion from int**’ to const int**’ [-fpermissive]
     cout<<test1(c,2)<<endl;
                    ^
test.cpp:4:5: error:   initializing argument 1 of int test1(const int**, int)’ [-fpermissive]
 int test1(const int **v,int num)
     ^

beim kompilieren des folgenden Codes:

#include <iostream>
using namespace std;

int test1(const int **v,int num)
{
    int *a;
    int result=0;
    //do somethings ....
    for(int i=0;i<num;i++)
    {
        a=v[i];
        //do somethings ....
        result+=*a;
    }
    return result;
}

void test2(const int num)
{
    cout<<num<<endl;
}

int main()
{
    int a =5;
    int b =8;
    int **c;
    c=new int *[2];
    c[0]=&a;
    c[1]=&b;
    cout<<test1(c,2)<<endl;
    test2(a);
    delete [] c; 
    return 0;
}

gebe ich einen int zu test2 die Frage nach const int und es ist ok. allerdings test1 nicht akzeptieren int ** statt const int **.

im obigen code auch typecast nicht funktioniert:

a=(int *)v[i];

AFAIK, const bedeutet, dass ich verspreche, dass ich nicht ändern Sie den Wert von v und ich nicht. aber der compiler gibt mir Fehler.

  • const int** sollte int* const*
  • Eigentlich sollte es wohl auch sein int const * const * da die Funktion nicht, ändern Sie den Zeiger in das übergebene array, noch die Werte, die Sie zeigen können.
  • Scheint wie eine Menge von nicht benötigten Zeiger für C++.
InformationsquelleAutor barej | 2014-12-12
Schreibe einen Kommentar