2011-11-26 7 views
1

多くの人がこのエラーに遭遇することはわかっています。私は検索作業をしましたが、このエラーメッセージはすべての異なる状況で表示されるようです。何が間違っているのか教えてください。基本的には、このクラスはlong型のint配列を格納します。エラー: 'long'と無効な変換の前に一次式が予期される

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()

と別のエラーであります関数を呼び出すときに型を指定しないでください。


他のエラーはここにある:

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

ポインタを返しますnew num。しかし、それをnumオブジェクトに割り当てています。これは互換性がありません。

num num1((long)81236); 

これは、スタック上でローカルにnum個のオブジェクトを作成します。

あなたはここに2つのオプションがあります。

他のオプションは次のとおりです。

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

これは、ヒープ上のnum個のオブジェクトを割り当てます。しかし、後でdeleteで解放する必要があります。

+0

別のエラーが発生しましたか?ありがとう! – YankeeWhiskey

+0

他のエラーが見つかりました。私の答えを更新... – Mysticial

+0

ありがとう!私はあなたの助言に従い、エラーを取り除く。私はちょうど、num num1 =新しいnum((long)81236)と言っています。 Javaで合法?私は2つの言語を混乱させたと思う.... – YankeeWhiskey

関連する問題