2011-11-26 49 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

相關問題