Was bedeutet der Fehler `expected ";" before "obj" bedeuten?
Ich Schreibe ein Programm in C++ mit meinem eigenen header-Datei.
main.cpp
#include<iostream>
#include"operation.h"
using namespace std;
main()
{
int a;
cout <<"Enter the value a";
cin>>a;
//class name add
//obj is object of add
add obj;
obj.fun(a);
}
Betrieb.h
class add
{
void fun(int b)
{
int c,d=10;
c=d+b;
cout<<"d="<<d;
}
}
Wenn ich kompilieren mit G++ unter Linux, es zeigt die folgenden Fehler:
->expected ";" before obj
->obj not declared in this scope
Wie löse ich dieses problem? Warum ist das passiert?
Auf einen weiteren Hinweis, sollten Sie beginnen, Ihren Klassennamen mit einem Großbuchstaben, dies ist standard und macht den code besser lesbar.
Ich würde kaum sagen, es ist standard. Es ist üblich, aber, wie Sie die Namen Ihrer Klassen ist abhängig von Ihren Vorgaben.
Wenn alles, was seine nicht-standard gegeben, die Klasse naming convention in der standard-Bibliothek... Beide Richtungen sind an der Tagesordnung.
Ich würde kaum sagen, es ist standard. Es ist üblich, aber, wie Sie die Namen Ihrer Klassen ist abhängig von Ihren Vorgaben.
Wenn alles, was seine nicht-standard gegeben, die Klasse naming convention in der standard-Bibliothek... Beide Richtungen sind an der Tagesordnung.
InformationsquelleAutor |
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
public:
an der Spitze der Klasse hinzufügen. Die Standardeinstellung für die Schüler ist Sie privat.Auch, Ihnen fehlt ein Semikolon am Ende der Klassendefinition. C++ erfordert Klasse Definitionen enden mit einem Semikolon nach der schließenden geschweiften Klammer (Sie könnte tatsächlich eine variable deklarieren, die an diesem Punkt).
kein problem - fing es während der Bearbeitung, und es schien wie eine gute Passform mit Ihrer Antwort.
InformationsquelleAutor
Sehe ich nicht, der eigentliche Grund für den Fehler, aber man sollte wirklich einlegen umfassen Wachen und es fehlt ; nach der Klassendefinition:
BEARBEITEN:
main () - Rückgabetyp ist nicht vorhanden. Sollten Sie einen 'int' an diesem Punkt.
Ich hatte nicht die Lösung gefunden, um die compiler-Fehler. Der erste code hat zwei kleine Probleme behoben, aber keiner von Ihnen sollte auslösen, dass compiler-Fehler: header-guards sind nicht erforderlich, aber in einem komplexeren Szenario erspart Ihnen doppelte Definitionen. Macht Spaß () - Methode public wird, korrigieren Sie die Zugriffsbeschränkung Fehler nachdem das eigentliche problem ist gelöst.
Oder so dachte ich... c++ compiler-Fehler sind manchmal ein wenig verwirrend.
InformationsquelleAutor
Wie oben erwähnt den ersten "Falschheit" ist die fehlende Semikolon nach class-Halterung;
zweite ist privat Zugriffsverletzung (damit diese Methode öffentlich),
Mein Vorschlag (um Ihre header-Datei "sauber") setzen definition der class-Methode in
*.cpp
- Datei und lassen Sie Ihre header enthalten nur die Deklaration (und vermeiden Sie die unnötige Aufnahme von iostream-header.)so
*.hpp
Datei enthalten sollte, nur:sowie
*.cpp
InformationsquelleAutor
Wie sind Sie mit der Initialisierung der Klasse? Beachten Sie, dass der folgende Code ist der richtige Weg zum instanzieren eines neuen "add" - Objekt in C++:
Ist nicht äquivalent zu den folgenden:
Feinen Unterschied, und auf jeden Fall eine Abkehr von der Weise, die einige andere Sprachen. Denkbar generieren "erwartete ;" Fehler.
Als ein beiseite, ich Stimme mit den oben Kommentator, dass die Klassen groß geschrieben werden soll und die Funktionen nicht. Dies ist eine Konvention, die macht eine viel größere Lesbarkeit, und die Sie sehen werden, wiederholt in anderen OO-Sprachen. OTOH, dies setzt Voraus, lesbaren code als Ihr Ziel. Ob Namen mit CamelCase oder unterstreicht, ist mehr subjektiv, und damit mehr umstritten, IMHO.
InformationsquelleAutor
Für mich sieht es aus wie das ist nicht das einzige problem, das Sie haben:
Stellen Sie sicher, dass Sie alle Fehler in der header-Datei zuerst.
InformationsquelleAutor