2011-11-26 57 views
1

我知道很多人遇到此错误。我做了搜索工作,但似乎这个错误消息出现在所有不同的情况。你能告诉我什么是错的吗?基本上这个类存储一个长输入的int数组。这个错误是在功能NUM()错误:在“长”和无效转换之前的预期主表达式

和另一个错误:

main.cpp:43: error: invalid conversion from ‘num*’ to ‘long int’ 
main.cpp:43: error: initializing argument 1 of ‘num::num(long int)’ 

#include <iostream> 
#include <fstream> 
using namespace std; 
//ifstream fin; 
//ofstream fout; 
class num 
{ 
    public: 
    int dig[9]; 
     void breakDown(long input) 
    { 
      for(int digPos=0;input>0;digPos++) 
      { 
        dig[digPos]=input-((int)input/10)*10; 
        input=(int)input/10; 
      } 
    } 
    num(long in) // constructor 
    { 
      breakDown(long in); 
    } 
    int outPut() 
    { 
      for(int digPos=0;digPos<9;digPos++) 
      { 
        cout << dig[digPos]; 
      } 
      return 0; 
    }  
}; 

//int init() 
//{ 
//  fin.open("runround.in",ifstream::in); 
//  fout.open("runround.out"); 
//} 


int main() 
{ 
//  init(); 
    num num1=new num((long)81236); 
} 

回答

5

的错误是在这里:

num(long in) // constructor 
{ 
    breakDown(long in); 
} 

它改成这样:

num(long in) // constructor 
{ 
    breakDown(in); 
} 

你不在调用函数时不指定类型。


其他错误是在这里:

num num1=new num((long)81236); 

new num返回一个指针。但是您将它分配给一个不兼容的num对象。

你这里有两种选择:

num num1((long)81236); 

这将在堆栈上本地创建一个NUM对象。

另一种选择是:

num *num1 = new num((long)81236); 

这将在堆上分配一个NUM对象。但您需要稍后用delete解锁。

+0

你能否看到另一个错误?谢谢! – YankeeWhiskey

+0

我发现了另一个错误。更新我的答案... – Mysticial

+0

谢谢!我遵循你的建议并摆脱错误。我只是说,是num num1 = new num((long)81236);法律在Java?我想我搞砸了两种语言...... – YankeeWhiskey

相关问题