2017-11-30 2 views
0

Ich habe einen Kompilierungsfehler in C++ mit Klassen. Ich habe schon früher mit Klassen gearbeitet und diesen Fehler noch nie erlebt. Ich habe versucht, vor der Methode ImprtData statische hinzuzufügen, aber das führte nur zu mehr Fehlern.C++ - Kompilierfehler

error: invalid use of non-static member function bank.ImprtData; 

hier ist mein CPP

#include "componets.h" 

User::User() { 
std::cout << "loaded" << std::endl; 
} 

void User::ImprtData() { 

    std::cout << "loaded.\n"; 
} 

und hier ist mein .h

#include <sstream> 
#include <fstream> 
#include <vector> 
#include <iostream> 
#include <string> 

class User { 
    public: 
      User(); 
      void write(); 
      void launch_main_menu(); 
      void login(); 
      void ImprtData(); 
    private: 
      void deposit(); 
      void withdrawl(); 
      std::string account_name; 
      int account_pin; 
      float account_balance; 
      std::string account_user_name; 
}; 

und mein Haupt schließlich

#include "componets.h" 

int main() { 
    std::cout << "Welcome to Bank 111.\n"; 
    User bank; 
    bank.ImprtData; 

    return 0; 
} 
+0

Ist es "componets.h" richtig sein? Vielleicht 'Komponenten.h'. Bitte fügen Sie den Dateinamen in Ihrem Beispiel hinzu. I.e. Sie können schreiben "und hier ist meine' componets.h' " – o3o

Antwort

1

Dies ist im Wesentlichen ein einfacher Tippfehler. Ersetzen

bank.ImprtData; 

mit

bank.ImprtData(); 

zu Aufruf die Funktion. Der Ausdruck bank.ImprtData verwirrt den Compiler, da er ihn als Adresse einer Funktion interpretiert, und gibt eine Diagnose aus, da die Funktion nicht static ist.

+1

Mark, um zu schließen, wenn es ein einfacher Tippfehler ist, und fügen Sie einen Kommentar hinzu. –

+0

@FantasticMrFox: Nein, Antworten sollten in den Antworten geschrieben werden. Und wenn die Frage hinreichend gut geschrieben ist - wie diese neben dem fadenscheinigen Titel steht - können Sie mit Bezug auf die Compilerdiagnose antworten. – Bathsheba

0

bank.ImprtData; sollte bank.ImprtData();