error 143
-
hi hab ein fehler und weiß nicht wie ich den wegbekomme
hier meine statische klasse
#pragma once #ifndef ___CBASIC_H___ #define ___CBASIC_H___ #include <iostream> #include "cElement.h" #ifdef __cplusplus extern "C" { #endif static class cBasic { public: static bool ExistMember(cElement * element); static bool FirstMember(void); static bool NextMember(cElement * element); static bool LastMember(cElement * element); static void CreateElement(cElement * _element); void DeleteMember(int index); private: void FreeMember(); }; #ifdef __cplusplus } #endif #endifhier die funktion wo der fehler auftritt
#pragma once #ifndef ___COBJECT_H___ #define ___COBJECT_H___ #include <iostream> #include "cBasic.h" #include "cPoint.h" #include "cElement.h" #ifdef __cplusplus extern "C" { #endif using namespace std; class cObject { private: class cObjectElement : public cElement { public: string type; cPoint * point; bool allowdraw; }; cObjectElement * element; public: cObject(void); ~cObject(void); void CreateObject(void) { //Prueft ob es ueberhaupt ein objekt in der objectliste gibt if(this->element == NULL) { //Erstellt das erste Objekt und legt dieses als first object fest this->element = new cObjectElement(); this->element->pre = NULL; } else { [b]cBasic.LastMember(this->element);[/b] //erstellt ein object und haengt es an das letzte object in der objectliste an. this->element->next = new cObjectElement(); this->element->next->pre = this->element; [b]cBasic.NextMember(this->element);[/b] } this->element->next = NULL; this->element->point = NULL; this->element->allowdraw = true; } }; #ifdef __cplusplus } #endif #endifan den stellen die fett makiert sind bekomm ich immer den fehler:
error C2143: Syntaxfehler: Es fehlt ';' vor '.'
-
Statische Methoden ruft man mit :: auf. (Zum Rest sag ich mal nichts.)
-
was soll das extern C da?
was soll das pragma once vor dem include header? sorry, ich hab kein visual c++, bei mir gibts compile errors...
was ist eine static class?das sieht alles irgendwie komisch aus...
-
Skym0sh0 schrieb:
was ist eine static class?
Das gibt es nicht, denn GCC 4.7 sagt:
error: a storage class can only be specified for objects and functions|
-
Also du willst unbedingt static klassen benutzen und definierst den ctor der Klasse, aber implementierst ihn nicht? Dann mach ihn gleich private. Was soll der Code für dich machen? Mit extern C erklärst du dem Compiler, dass du den Code evtl aus C aufrufst und ihn deshalb in C compilieren soll. Der Compiler wird dir hier ein Auge zudrücken wegs den static methoden, aber eigentlich gibt's class in C nicht. Ist alles sehr komischer Code.
Ich würde static für Aufgaben wie Singleton Patterns benutzen, wo die static Methode zur Klasse gehört und deshalb darin implementiert werden kann, aber eine rein statische Klasse ist eher schlecht. Nimm lieber einen Namespace und der Aufruf bleibt komplett identisch! Class::staticMethod oder Namespace::Function.
Der Compiler sagt dir doch die Fehlerzeile, also darfst du uns die Zeile auch presentieren.