2017-05-11 3 views
0

Ich bin mir nicht sicher, warum meine Funktion nicht funktioniert. Es sollte etwas ausgedruckt werden (eine Fehlermeldung, nachdem der Benutzer die Grenzen überschritten hat). Ich habe den Array-Index auf 3 Index-Slots gesetzt. Ich bin auch eine Fehlermeldung „nicht verwendetes Variable‚yourArray‘immer ich bin nicht sicher, wo man von hier geht. Immer noch versuchen, zu lernen, C++ so und Beratung oder Hilfe wird sehr geschätzt.Nicht verwendete Variable verbietet Drucken?

#include <iostream> 
using namespace std; 

class safeArray{ 
public: 
    void outofBounds(int,int); 
    int yourArray[3]; 
    int i; 
}; 

    void outofBounds(int,int); 
    int yourArray[3]; 
    int i; 

    void outofBounds(int yourArray[],int sizeofArray) {  
    for (i=0;i<sizeofArray;i++){ 
    cout<<"Please enter integer"; 
    cin >>yourArray[i]; 
    yourArray[i]++; 

for (i=0;i>sizeofArray;){ 
cout<<"safeArray yourArray (" <<yourArray[0]<<","<<yourArray[3]<<")" 
<<endl; 
    }}} 

int main() { 
void outofBounds(int,int); 
int yourArray[3]; //Error: Used variable "yourArray" 
}; 
+2

'void outofBounds (int, int);' ruft die Funktion nicht auf. Es erklärt nur die Funktion erneut. –

+2

Klingt, als könnten Sie ein [gutes C++ Buch] verwenden (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – NathanOliver

+0

Beachten Sie auch, dass 'cout <<" safeArray yourArray ("<< yourArray [0] <<", << << yourArray [3] << ")" << endl; 'Zugriff über das Ende des Arrays und ist undefiniertes Verhalten. – NathanOliver

Antwort

0

Ihr Programm läuft gut .. Wenn Sie nicht die „Werror“ Flagge an den Compiler hinzugefügt, die die „nicht verwendete Variable“ -Warnung als Fehler behandeln würde der Code kompiliert wie hier fein gesehen:

Obwohl Ihr Programm nicht tut, was http://coliru.stacked-crooked.com/a/d648b94f205b51dc Sie möchten es aus folgenden Gründen:


1.) Sie haben 3 Neudefinitionen von outofBounds innerhalb verschiedenen Namensräume:

  • einen in der Namespace-Klassen Safearray, die eine Elementfunktion ist davon
  • dann in dem globalen Raum
  • und dann in der Haupt-Funktion (der Einstiegspunkt)

Aber die ein tatsächlich definiert wird, ist das in dem globalen Raum (2. eins)


2.) Sie geben nichts an die Funktion in main weiter. definieren Sie Ihre Array zuerst da dann die Funktion aufrufen, indem Sie:

int yourArray[3]; 
outofBounds(yourArray, 3); 

3.) Sie haben wahrscheinlich die Member-Methode „outofBounds“ innerhalb Safearray-Klasse definieren wollte. Dies kann durch das Schreiben des Bereichsoperator erfolgen :: die die Klasse, der angibt, die Member-Funktion gehört zu:

class SafeArray { // is a class, can also be struct since everything is public anyways 
public: 
    void outofBounds(int,int); // a member of the class SafeArray 
// private: 
    int yourArray[3]; 
    int i; 
}; 

void SafeArray::outofBounds(int yourArray[],int sizeofArray) { 
    // do something... 
} 

aber dann wieder müssen Sie einige Konstruktor, der die Mitglieder der Klasse initialisiert. Einige Arbeit muss getan werden, damit es funktioniert, wie Sie wollen. Viel Glück :)

Verwandte Themen