2016-05-06 5 views
0
#include "stdafx.h"  
#include <iostream>  
using namespace std;  
#include <string.h>  

class Array  
{  
public:  
    int Length;  
    char *Arrp;  
    Array(char *str)  
    {  
     Length=strlen(str);  
     Arrp=str;  
    }  
    char & operator[](int index);  
};  
    char & Array::operator[](int index)  
    {  
     if(index>=Length||index<0)  
     {  
      cout<<"Index "<<index<<" error."<<endl;  
      return Arrp[0];  
     }  
     return Arrp[index];  
    }  
int _tmain(int argc, _TCHAR* argv[])  
{  
    Array a("Good");  
    cout<<a.Arrp[6]<<endl;  
    return 0;  
}  

Es kommt überhaupt nicht in die Überlastfunktion von []. Ich vergleiche es mit vielen Beispielen, aber was ich schreibe funktioniert nie.Warum funktioniert die Überlastfunktion von [] hier nicht?

Wie kann ich weiter verfahren?

Antwort

1

Sie rufen nicht die überladene Funktion auf, sondern lesen direkt das Array selbst.
Versuchen:

cout<<a[6]<<endl; 
+1

Des Weiteren die 'Länge' Attribute machen und 'ARRP' private –