Technologieaustausch

Fehler – mehrere Definitionen

2024-07-12

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

Fehler – mehrere Definitionen

Ihr Problem besteht darin, dass in Ihrem C++-Code der Fehler „Verweis auf ‚Daten‘ ist mehrdeutig“ aufgetreten ist. Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, auf eine Variable zu verweisen, die mehrere Definitionen hat.

In Ihrem Code definieren Sie eine globale Variable „data“. Gleichzeitig gibt es in der C++-Standardbibliothek auch eine Funktionsvorlage mit dem Namen „data“. Wenn Sie Daten in der fib-Funktion verwenden, kann der Compiler nicht bestimmen, ob Sie auf die globale Variable data oder std::data verweisen möchten, daher gibt er einen mehrdeutigen Fehler aus.

Um dieses Problem zu lösen, können Sie den Namen der globalen Variablendaten ändern oder explizit angeben, dass Sie beim Aufruf auf die globale Variable verweisen möchten.

Lösung 1: Ändern Sie den globalen Variablennamen

cpp

#enthalten<iostream>

Namespace std verwenden;

 

1e9+7;

int fibData[10000]; //Name ändern

 

int fib(int n){

wenn (n == 1 || n == 2) {fibData[n] = 1; Rückgabewert fibData[n];}

wenn(fibData[n]!=0)return fibData[n];

fibData[n]=fibData[n-1]+fibData[n-2];

fibData[n] zurückgeben;

 

int main() {

int t;

cin&gt;&gt;t;

für (int i = 0; i

int n;

cin&gt;&gt;n;

cout&lt;

  } 

gebe 0 zurück;

}

Lösung 2: Geben Sie explizit an, dass Sie beim Aufruf auf eine globale Variable verweisen möchten

cpp

#enthalten<iostream>

Namespace std verwenden;

 

1e9+7;

int Daten[10000];

 

int fib(int n){

if(n==1||n==2){::data[n]=1;return ::data[n];} // Fügen Sie '::' vor, um klar anzugeben, dass Sie auf verweisen möchten Globale Variable

wenn(::Daten[n]!=0)return ::Daten[n];

::Daten[n]=::Daten[n-1]+::Daten[n-2];

zurückgeben ::data[n];

 

int main() {

int t;

cin&gt;&gt;t;

für (int i = 0; i

int n;

cin&gt;&gt;n;

cout&lt;

  } 

gebe 0 zurück;

}