So viele Fehler die ich nicht verstehe
-
Hey Leute,
Ich arbeite gerade an einer Codegenerator Classe aber ich verstehe die Fehler nicht bzw. weiß nicht wie ich sie lösen kann.
#include "md5.h" #include <stdio.h> #include <stdlib.h> #include <time.h> using namespace std; class code{ public: code(); char codeGen(void); char* macGen(char Code); int macComp(char MAC, char Message); private: char* gen[82]; char Code[32]; int i, charAnz; }; code::code() { char* gen[82]= {"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,j,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0,^,°,!,§,$,%,&,/,(,),=,?,*,+,~,#,<,>,|,{,}"}; char Code[32]; int i, charAnz = 32; }; char code::codeGen(void){ srand(time(NULL)); for( i=0;i<=(charAnz-1);i++){ Code[i] = gen[rand() % 82]; } }; char* code::macGen(char* Code){ MD5 md5; return md5.digestString(Code); /* Put super cool and efficent MAC- Algorithm here Didn't think of one yet */ }; int code::macComp(char MAC, char Message){ if(MAC == macGen(Message)) return 0; else return 1; };Codegen.cpp||In member function
char code::codeGen()':| Codegen.cpp|32|error: invalid conversion from \char*' to `char'|
Codegen.cpp|37|error: prototype for `char* code::macGen(char*)' does not match any in class `code'|
Codegen.cpp|12|error: candidate is: char* code::macGen(char)|
Codegen.cpp||In member function `int code::macComp(char, char)':|
Codegen.cpp|51|error: ISO C++ forbids comparison between pointer and integer|
||=== Build finished: 4 errors, 0 warnings ===|
-
Raavgo schrieb:
ich verstehe die Fehler nicht
Die sind eigentlich ziemlich klar. Ich verstehe allerdings nicht, was der Code machen soll. Das macht es schwer, Empfehlungen zu geben. Der Konstruktor ist sehr seltsam - u.a. initialisiert er das Objekt nicht. Deine Membervariablen haben u.U. einen falschen Typ. Aber ohne zu wissen, wofür sie gebraucht werden...
-
Meine Frage an dich ist, was hat das mit C++ zu tun?
//kein zeiger sondern eine constante Variable const char gen[] = {"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,j,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0,^,°,!,§,$,%,&,/,(,),=,?,*,+,~,#,<,>,|,{,}"}; char Code[32];so sollte das eigentlich aussehen, aber nur wenn du C programmierst.
-
cppvoid schrieb:
so sollte das eigentlich aussehen, aber nur wenn du C programmierst.

-
camper schrieb:
Raavgo schrieb:
ich verstehe die Fehler nicht
Die sind eigentlich ziemlich klar. Ich verstehe allerdings nicht, was der Code machen soll. Das macht es schwer, Empfehlungen zu geben. Der Konstruktor ist sehr seltsam - u.a. initialisiert er das Objekt nicht. Deine Membervariablen haben u.U. einen falschen Typ. Aber ohne zu wissen, wofür sie gebraucht werden...
Der Code ist dafür einen zufälligen Code zu generieren und dessen MAC Wert dazu.
cppvoid schrieb:
Meine Frage an dich ist, was hat das mit C++ zu tun?
//kein zeiger sondern eine constante Variable const char gen[] = {"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,j,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0,^,°,!,§,$,%,&,/,(,),=,?,*,+,~,#,<,>,|,{,}"}; char Code[32];so sollte das eigentlich aussehen, aber nur wenn du C programmierst.
Du hast recht ich programmiere seit 4 Jahren in C und versuche hier gerade ein funktionierendes C Programm mit seinen Unterprogrammen OOP zu machen.
-
Du hast recht ich programmiere seit 4 Jahren in C und versuche hier gerade ein funktionierendes C Programm mit seinen Unterprogrammen OOP zu machen.
Das wird aber schwierig ohne die benötigten Kenntnisse in C++.
-
Der vorliegende Fehler lässt sich auch mit C-Kenntnissen verstehen. Selbst wenn man gar nichts von C++ weiß.
-
Bashar schrieb:
Der vorliegende Fehler lässt sich auch mit C-Kenntnissen verstehen. Selbst wenn man gar nichts von C++ weiß.
Ich verstehe den Fehler ich verstehe nicht wie ich ihn lösen soll
-
Raavgo schrieb:
Bashar schrieb:
Der vorliegende Fehler lässt sich auch mit C-Kenntnissen verstehen. Selbst wenn man gar nichts von C++ weiß.
Ich verstehe den Fehler ich verstehe nicht wie ich ihn lösen soll
Dann erklär bitte den Fehler für uns.
-
Weiß zwar nicht, was Du vor hast, aber vielleicht hilft das ein wenig:
#include <cstdlib> #include <ctime> #include <iostream> using namespace std; class Code { public: Code(); char* macGen(char Code); int macComp(char MAC, char Message); private: static char alphapet[]; public: char code[32]; }; char Code::alphapet[]= { //in die code.cpp 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','j','r','s','t','u','v','w','x','y','z', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z', '1','2','3','4','5','6','7','8','9','0', '^','!','$','%','&','/','(',')','=','?','*','+','~','#','<','>','|','{','}', }; Code::Code() { for(int i=0; i!=sizeof(code); ++i) code[i] = alphapet[rand() % sizeof(alphapet)]; } int main() { srand(time(NULL));//gehört an den anfang der main for(int o=0; o!=10; ++o) { Code c; for(int i=0; i!=sizeof(c.code); ++i) cout<<c.code[i]; cout<<'\n'; } }
-
camper schrieb:
Raavgo schrieb:
Bashar schrieb:
Der vorliegende Fehler lässt sich auch mit C-Kenntnissen verstehen. Selbst wenn man gar nichts von C++ weiß.
Ich verstehe den Fehler ich verstehe nicht wie ich ihn lösen soll
Dann erklär bitte den Fehler für uns.
Ich habe den Datentyp char und einen char Pointer und ich kann sie nicht ineinander umwandeln. Ich muss die aber trotzdem irgendwie zum laufen bringen.
-
volkard schrieb:
Weiß zwar nicht, was Du vor hast, aber vielleicht hilft das ein wenig:
#include <cstdlib> #include <ctime> #include <iostream> using namespace std; class Code { public: Code(); char* macGen(char Code); int macComp(char MAC, char Message); private: static char alphapet[]; public: char code[32]; }; char Code::alphapet[]= { //in die code.cpp 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','j','r','s','t','u','v','w','x','y','z', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z', '1','2','3','4','5','6','7','8','9','0', '^','!','$','%','&','/','(',')','=','?','*','+','~','#','<','>','|','{','}', }; Code::Code() { for(int i=0; i!=sizeof(code); ++i) code[i] = alphapet[rand() % sizeof(alphapet)]; } int main() { srand(time(NULL));//gehört an den anfang der main for(int o=0; o!=10; ++o) { Code c; for(int i=0; i!=sizeof(c.code); ++i) cout<<c.code[i]; cout<<'\n'; } }Danke, hat mir sehr geholfen.
-
Im Weiteren gerne weiterfragen.
Aber dann ein vollständiges Programm bitte, das "irgendwie" nicht geht.
Also Sachen rausmachen wie die "md5.h", die wir nicht kennen. Oder reinkopieren. Und möglichst wenig reinmachen. Dann kann einer wie ich den Code einfach in seine IDE kopieren und mal rumtesten. Das wäre ideal. Je weniger Arbeit und je konkreter die Frage ist, desto schneller und hilfreicher ist die Antwort.
-
@volkard: hast du "alphapet" extra so falsch geschrieben? Oder ist das wieder einer deiner Scherze, die ich nicht verstehe?
-
hast du "alphapet" extra so falsch geschrieben? Oder ist das wieder einer deiner Scherze, die ich nicht verstehe?
Warum schreibst du "oder"?
-
Th69 schrieb:
@volkard: hast du "alphapet" extra so falsch geschrieben? Oder ist das wieder einer deiner Scherze, die ich nicht verstehe?
Nur aus Versehen. Hab erst am Ende das ursprüngliche "gen" durch "alphapet" ersetzt und den Fehler vor dem Posten nicht bemerkt.
-
OK.