2011-11-26 2 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 *num1 = new num((long)81236); 

이것은 힙에 납입 객체를 할당합니다. 하지만 나중에 delete으로 해방해야합니다.

+0

다른 오류가 표시 될 수 있습니까? 감사! – YankeeWhiskey

+0

다른 오류를 발견했습니다. 내 대답 업데이트 중 ... – Mysticial

+0

고마워요! 나는 당신의 조언을 따르고 오류를 제거합니다. 나는 말하고있다, num num1 = 새로운 num ((long) 81236); Java의 법적? 나는 두 언어를 엉망으로 만들었다 고 생각합니다 .... – YankeeWhiskey

관련 문제