τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
bug - πολλαπλοί ορισμοί
Το πρόβλημά σας είναι ότι αντιμετωπίσατε ένα σφάλμα "η αναφορά στο "δεδομένα" είναι διφορούμενη" στον κώδικά σας C++. Αυτό το σφάλμα παρουσιάζεται συνήθως όταν προσπαθείτε να αναφέρετε μια μεταβλητή που έχει πολλούς ορισμούς.
Στον κώδικά σας, ορίζετε μια καθολική μεταβλητή. Ταυτόχρονα, υπάρχει επίσης ένα πρότυπο συνάρτησης με το όνομα δεδομένα στην τυπική βιβλιοθήκη της C++. Όταν χρησιμοποιείτε δεδομένα στη συνάρτηση fib, ο μεταγλωττιστής δεν μπορεί να καθορίσει εάν θέλετε να ανατρέξετε στα δεδομένα καθολικής μεταβλητής ή στο std::data, επομένως δίνει ένα διφορούμενο σφάλμα.
Για να λύσετε αυτό το πρόβλημα, μπορείτε να αλλάξετε το όνομα των δεδομένων καθολικής μεταβλητής ή να καθορίσετε ρητά ότι θέλετε να αναφέρεται η καθολική μεταβλητή κατά την κλήση.
Λύση 1: Αλλάξτε το όνομα της καθολικής μεταβλητής
cpp
#περιλαμβάνω<iostream>
χρησιμοποιώντας namespace std?
int mod=1e9+7;
int fibData[10000]; //Αλλαγή ονόματος
int fib(int n){
if(n==1||n==2){fibData[n]=1;return fibData[n];}
if(fibData[n]!=0)return fibData[n];
fibData[n]=fibData[n-1]+fibData[n-2];
επιστροφή fibData[n];
}
int main() {
int t;
cin>>t;
for(int i=0;i
int n;
cin>>n;
κόουτ<
}
επιστροφή 0;
}
Λύση 2: Καθορίστε ρητά ότι θέλετε να αναφέρετε μια καθολική μεταβλητή κατά την κλήση
cpp
#περιλαμβάνω<iostream>
χρησιμοποιώντας namespace std?
int mod=1e9+7;
int δεδομένα[10000];
int fib(int n){
if(n==1||n==2){::data[n]=1;return ::data[n];} // Προσθέστε '::' μπροστά για να καθορίσετε με σαφήνεια ότι θέλετε να αναφέρετε το καθολική μεταβλητή
if(::data[n]!=0)return ::data[n];
::δεδομένα[n]=::δεδομένα[n-1]+::δεδομένα[n-2];
return ::data[n];
}
int main() {
int t;
cin>>t;
for(int i=0;i
int n;
cin>>n;
κόουτ<
}
επιστροφή 0;
}