-1

을 defalt 사용하고 난이 링커 오류가있을 때 기능 _main에서 참조 \t되지 않은 외부 기호 :오류 LNK2019 난에서 BigInt 클래스를 구현하기 위해 노력하고 비주얼 스튜디오를 사용하고 인수

오류 LNK2019 되지 않은 외부 기호 "클래스 함수 _main에서 참조 된 BigInt __cdecl bint (void) "(? bint @@ YA? AVBigInt @@ XZ)

기본 인수를 사용할 때만 이상하게 들립니다.

BigInt::BigInt(const int val) :value(to_string(val)) 
{ 
    digits = value.size(); 
} 

BigInt::~BigInt() 
{ 
} 

홈페이지 :

#ifndef BIGINT 
#define BIGINT 

#pragma once 
#include <string> 
#include <iostream> 
using namespace std; 
class BigInt 
{ 
    string value; 
    size_t digits; 
public: 

    BigInt(const int val=0); 
    ~BigInt(); 
}; 

#endif 

소스 코드 :

다음은 관련 코드 헤더 파일의

int main() 
{ 
    BigInt bint(); 
    return 0; 
} 

컴파일하지 않고, 위의 오류를 제공합니다.

그러나이

int main() 
{ 
    BigInt bint(0); 
    cout << bint; 
    return 0; 
} 

무슨 일이 일어나고 있는지 어떤 생각을합니까? 감사.

+0

'()'을 사용하지 마십시오. 함수 선언 – xinaiz

+0

그래서 무엇을 사용해야합니까? –

+0

@YairHalberstadt 'BigInt bint;' –

답변

1

첫 번째 예에서 BigInt bint();은 오해의 소지가 있습니다. 기본 생성자를 사용하여 bint 유형의 BigInt 변수를 선언하는 것 같습니다. 또한 로컬에서 bint이라는 새로운 함수를 선언하는 것처럼 보이는데, 인수는 없으며 BigInt을 반환합니다. 컴파일러는 가능한 경우 함수 선언으로 해석하도록 선택합니다. Most vexing parse을 참조하십시오.

두 번째 예에서는 인수 0을 제공합니다. 0은 유형이 아니기 때문에 명령문을 함수 선언으로 해석 할 수 없습니다. 첫 번째 예제에서 괄호를 제거하면 더 이상 함수 선언처럼 보이지 않으며 모호성을 피할 수 있습니다.

+0

@ 가장 고생스러운 구문 분석에 대한 링크입니다. 전에는 몰랐어. – Sabuncu

관련 문제