기술나눔

버그 - 여러 정의

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

버그 - 여러 정의

문제는 C++ 코드에서 "'데이터'에 대한 참조가 모호합니다."라는 오류가 발생했다는 것입니다. 이 오류는 일반적으로 여러 정의가 있는 변수를 참조하려고 할 때 발생합니다.

코드에서 전역 변수 data를 정의하는 동시에 C++ 표준 라이브러리에는 data라는 함수 템플릿도 있습니다. fib 함수에서 데이터를 사용할 때 컴파일러는 전역 변수 data를 참조할지 또는 std::data를 참조할지 여부를 결정할 수 없으므로 모호한 오류가 발생합니다.

이 문제를 해결하려면 전역 변수 데이터의 이름을 변경하거나 호출 시 전역 변수를 참조하도록 명시적으로 지정하면 됩니다.

해결 방법 1: 전역 변수 이름 변경

영어: 영어: cpp(씨피)(씨피)

#포함하다<iostream>

네임스페이스 std 사용

 

정수 모드=1e9+7;

int fibData[10000]; //이름 변경

 

int fib(int n){

n==1||n==2인 경우 fibData[n]=1; fibData[n]을 반환합니다.

fibData[n]!=0이면 fibData[n]을 반환합니다.

fib데이터[n] = fib데이터[n-1] + fib데이터[n-2];

fibData[n]을 반환합니다.

 

int 메인() {

정수 t;

&gt;&gt;t;를 표시합니다.

int i=0;i에 대하여

정수 n;

영어: cin&gt;&gt;n;

cout&lt;

  } 

0을 반환합니다.

}

해결 방법 2: 호출 시 전역 변수를 참조하도록 명시적으로 지정

영어: 영어: cpp(씨피)(씨피)

#포함하다<iostream>

네임스페이스 std 사용

 

정수 모드=1e9+7;

int 데이터[10000];

 

int fib(int n){

if(n==1||n==2){::data[n]=1;return ::data[n];} // 참조하려는 항목을 명확하게 지정하려면 앞에 '::'를 추가합니다. 전역 변수

if(::data[n]!=0) ::data[n]을 반환합니다.

::데이터[n] =::데이터[n-1] +::데이터[n-2];

::data[n]을 반환합니다.

 

int 메인() {

정수 t;

&gt;&gt;t;를 표시합니다.

int i=0;i에 대하여

정수 n;

영어: cin&gt;&gt;n;

cout&lt;

  } 

0을 반환합니다.

}