Fehlermessage
-
Ich habe folgende Fehlermessage:
request for member 'x' in (&entry)->std::basic_string<_charT,_Traints,_allox<::operator[] [with _CharT = char, _traits = std::char_traits<char>,_allox = std::allocator<char>](((unsigned int)i))', which is on non-class type char
Diese wird im Code hier angezeigt:
int entryVr::srchEntry(string entry){ for(int i = 0;i<quantity;i++){ string vsrchnick = entry[i].getNick(); if(vsrchnick == entry) return 0; } return -1; }Die Klasse sieht so aus:
class entryVr{ private: int quantity; public: entryIfc *entry; entryVr() {rdEntry();} ~entryVr() {delete[] entry;} int srchEntry(string entry); void rdEntry(); void entryDat(); };Diese nimmt hier ihr Funktion her(entryIfc):
[cpp]string getNick(){ return nick; } string nick;Woran liegt der Fehler?
Mit freundlichen Grüßen therma
-
Dieser Fehlermeldug kommt zustande, weil erstens dein string den du übergibst kein
Array von String ist.
Zweitens wie willst du das machen mi der Funktion entry.getNick();
getNick ist keine Memberfunktion der Klasse String ?!
-
Cefour schrieb:
Zweitens wie willst du das machen mi der Funktion entry.getNick();
getNick ist keine Memberfunktion der Klasse String ?!Ich glaube, getNick() ist ein member von entryIfc.
Greetz, Swordfish
-
Ich glaube, getNick() ist ein member von entryIfc
korrekt.
Dieser Fehlermeldug kommt zustande, weil erstens dein string den du übergibst kein
Array von String ist.Wie meinst du das?
Wie würde das Programm also richtig aussehen?
-
tu mir kurz 'nen Gefallen und versuch
int entryVr::srchEntry(string entry_to_find) { for( int i = 0; i < quantity; i++ ) { string vsrchnick = entry[ i ].getNick( ); if( vsrchnick == entry_to_find ) return 0; } return -1; }Greetz, Swordfish
-
Gibts doch nicht.Da ändert sich doch nichts. Aber der Fehler kommt nicht mehr. Nun kommt nur noch expected ; before int und expected primary-expression before int.
Das ist das int main
void entryVr::entryDat(){ { ... dof.close(); } int main(){ return 0; }
-
Hat sich erledigt: Dummheitfehler: int a(){
{
-
therma schrieb:
Gibts doch nicht.Da ändert sich doch nichts. Aber der Fehler kommt nicht mehr.
Dann schau nochmal ganz genau hin, was "entry" im ersten Fall ist (drei Zeilen über dem Fehler gucken!) und was "entry" im zweiten Fall ist.
-
Cefour schrieb:
Dieser Fehlermeldug kommt zustande, weil erstens dein string den du übergibst kein
Array von String ist.Was erstmal kein Problem wäre. Operator [] liefert dann die einzelnen Zeichen des Strings. therma hat nur nicht beachtet, dass der Funktionsparameter den Klassenmember verdeckt. Unterschiedliche Bezeichner oder explizit this-> beseitigen das Problem.
-
groovemaster schrieb:
[...] therma hat nur nicht beachtet, dass der Funktionsparameter den Klassenmember verdeckt. Unterschiedliche Bezeichner oder explizit this-> beseitigen das Problem.
Also ich wär in jedem Fall dafür, unterschiedliche Bezeichner für Member und Methodenparameter zu verwenden, da dies sich übersichtlicher ist und weniger fehleranfällig. Eventuell allen member Bezeichner den Präfix **m_**member verpassen.
Greetz, Swordfish