2016-11-22 131 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变量指向的内容。

在两个大括号之间的代码中存在一个存在类的定义结束的错误。

编辑:感谢下面的whozcraig的评论:*(ptr+i) = new int[MaxSize];也没什么意义。

+0

你是对的,我刚刚编辑了我的答案,指出这只是我能马上看到的一个错误。代码中还有一个流浪的字符。我很确定编译器应该列出多个错误。 :) –

相关问题