2016-11-22 4 views
-4

Ich brauche wenig Hilfe. Wenn ich meinen Code kompilieren es mir diesen Fehler geben:# [Fehler] ungültige Konvertierung von 'int *' zu 'int'

[Error] invalid conversion from 'int*' to 'int' [-fpermissive]

Mein Code unten gegeben wird, bitte die Fehler hinweisen:

#include <iostream> 

using namespace std; 

class ptrArry{ 
private: 
    int *ptr; 
    int MaxSize; 
public: 
    ptrArry(){ 
     ptr=NULL; 
     MaxSize=2; 
     for(int i=0; i<MaxSize; i++){ 
      *(ptr+i) = new int[MaxSize]; 
     } 
    } 
    void setArry(int val){ 
     for(int i=0; i<MaxSize; i++){ 
      for(int j=0; j<MaxSize; j++){ 
       cout<<"i="<<i<<endl; 
       cout<<"j="<<j<<endl; 
       ptr=val; 
      } 
     } 
    } 
    void getArry(){ 
     for(int i=0; i<MaxSize; i++){ 
      for(int j=0; j<MaxSize; j++){ 
       cout<<"i="<<i; 
       cout<<"j="<<j; 
       cout<<ptr[i][j]; 
       cout<<endl; 
      } 
     } 
    } 
}; 
int main() { 
    ptrArry obj1; 
    obj1.setArry(50); 
    obj1.getArry(); 
    return 0; 
} 
+3

Ist das Java-Tag beabsichtigt? –

+1

Was ist der Deal mit Java hier? – SomeJavaGuy

+2

Nun, Fehlermeldungen werden normalerweise mit einer Zeilennummer angezeigt ... wäre vielleicht hilfreich, um sich diese spezielle Zeile genauer anzusehen. Und Sie sollten ** wirklich ** ein richtiges Tutorial über Speicherverwaltung und Zeiger lesen. Selbst wenn dieser Code kompiliert würde, würde er Speicher wie ein Sieb verlieren und SIGSEGV in kürzester Zeit erhalten. – Paul

Antwort

3

Ein paar Dinge kann ich sehen:

Diese Zeile innerhalb setArray() Funktion ist, was es verursacht: ptr=val; Sie eine Zeigervariable einen ganzzahligen Wert zuweisen - worüber der Compiler sich beschwert. Sie sollten stattdessen Folgendes tun: *ptr=val; und damit speichern Sie den ganzzahligen Wert, auf den von der ptr Variable verwiesen wird.

Es gibt ein streunendes `in Ihrem Code zwischen den zwei Klammern}}, wo die Klassendefinition endet.

Edit: Dank whozcraig Kommentar unten: *(ptr+i) = new int[MaxSize]; macht sehr wenig Sinn.

+0

Sie haben Recht, ich hatte gerade meine Antwort bearbeitet, um darauf hinzuweisen, dass es nur einer der Fehler ist, die ich sofort sehen konnte. Es gibt auch einen Streuner im Code. Ich bin mir ziemlich sicher, dass der Compiler mehr als einen Fehler aufgelistet haben sollte. :) –

Verwandte Themen