2016-11-22 8 views
-4

少し助けが必要です。私は私のコードをコンパイルすると、それは私に、このエラーを与える:私のコードは以下のとおりである#[エラー] 'int *'から 'int'への無効な変換

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

、間違いを指摘してください:

#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

Javaタグは意図的ですか? –

+1

ここでJavaとは何ですか? – SomeJavaGuy

+2

よく、エラーメッセージには通常行番号が付いています...特定の行を詳しく見てみると非常に役立ちます。そして、**本当に**メモリ管理とポインタに関する適切なチュートリアルを読んでください。たとえそのコードがコンパイルされていても、ふるいのようなメモリが漏れて、すぐにSIGSEGVを受け取ることはありません。 – Paul

答えて

3

私が見ることができる物事のカップル:

この内部のsetArray()関数が原因です。ptr=val; ポインタ変数に整数値を代入します。これは、コンパイラが不平を言っているものです。代わりに*ptr=val;を実行して、そうすることで、ptr変数が指しているものに整数値を格納します。

クラス定義が終了する2つの中カッコの間にコードがあります。

編集:whozcraigさんのコメントありがとうございました。*(ptr+i) = new int[MaxSize];は非常に意味がありません。

+0

あなたは正しいです、私はちょうど私がすぐに見ることができる間違いの1つであることを指摘するために私の答えを編集したばかりでした。コードには迷子の文字もあります。コンパイラが複数のエラーを列挙しているはずです。 :) –

関連する問題