[MVSC++6.0] Problem bei Deklaration und Definition von Methoden
-
Moinsen Community !
Ich bin grade dabei mir selbst C++ beizubringen.
So. Nun iss ja alles gut und schön, hab ich folgendes Problem:
Beim versuch in der menue.cpp die Methode zu Definieren wirft der Compiler
[MSVC++6.0] folgende Fehlermeldung aus:J:\Eigene Dateien\Meine Projekte\noname002\main.cpp(29) : error C2352: 'C_Menue::DrawMenue' : Unzulaessiger Aufruf einer nichtstatischen Member-Funktion
j:\eigene dateien\meine projekte\noname002\menue.h(6) : Siehe Deklaration von 'DrawMenue'Warum muss ich eine statische Methode Deklarieren, damit ich sie später
Definieren kann ?
Soweit ich weiss, sollte das auch ohne static funktionierenDatei main.cpp
#include <iostream> #include <string> #include <stdio.h> #include "menue.h" using namespace std; int main () { char title[30]; int hoehe, laenge; printf ("Name fuer das Menue: "); gets ( title ); printf ("\n"); printf ("Laenge des Menues: "); scanf("%d",&laenge); printf ("\n"); printf ("Hoehe des Menues: "); scanf("%d",&hoehe); printf ("\n"); system("cls"); printf ("Hoehe: %d Laenge: %d \n\n",hoehe,laenge); C_Menue::DrawMenue( laenge, hoehe, title ); system("pause"); return 0; }Datei menue.h
#include <string> class C_Menue { public: void DrawMenue(int length, int height, std::string title); };Datei menue.cpp
#include "menue.h" #include <iostream> void C_Menue::DrawMenue(int lenght, int height, std::string title) { std::string title_p1; std::string title_print; int title_maxlen; for ( int i = 0; i <= lenght; i++) { title_p1.append("\xCD"); }; title_print.append("\xC9"+title_p1+"\xB4 " + title + " \xC3"+title_p1+"\xBB"); title_maxlen = title_print.length() - 2; title_print.append("\n"); for ( i = 0; i <= height; i++) { if (i == height) { title_print.append("\xC8"); for ( int a = 0; a <= title_maxlen-1; a++) { title_print.append("\xCD"); } title_print.append("\xBC\n"); } else { for ( int x = 0; x <= title_maxlen; x++ ) { if (x == 0) { title_print.append("\xBA"); } if (x == title_maxlen) { title_print.append("\xBA\n"); } else { title_print.append(" "); } } } }; printf ("%s",title_print.c_str()); }€dit:
Sobald ich der Deklaration ein static anführen lasse, läuft alles problemlos.
-
Jo ... hmm weil du halt ein Object von C_Menu erstellen musst ...
-
Öhh ja klar

Erklärst du mir wie das geht ?
Ich glaub soweit war ich noch ned.
Bzw. Weiss ich grade mal nich was du meinst.
-
naja du hast sowieso nen komischen mischmasch da ...
#include <iostream> #include <string> #include "menue.h" int main () { std::string string_title; unsigned short hight = 0; unsigned short lenght = 0; std::cout << "Name fuer das Menue: " << std::flush; std::getline(std::cin, string_title); std::cout << "Laenge des Menues: " << std::flush; std::cin >> lenght; std::cout << "Hoehe des Menues: " << std::flush; std::cin >> hight; std::cout << "Hoehe: " << hight << std::endl; std::cout << "Laenge: " << length << std::endl; C_Menue menu; menu.DrawMenue(lenght, hight, title); return 0; }Und der Rest des Codes geht noch weniger -.- also da musse mal dringen was dran machen ^^
aja ... hab jetzt keine Fehlerabfrage falls kein unsigned short eingegeben wurde ... muss du noch machen ...
-
lol kann mich mal jemand treten ?
C_Menue menu; menu.DrawMenue(lenght, hight, title);Hab ich ja glatt vergessen

THX
hmm die abfrage iss ja eh nur provisorisch ...
die brauch ich nur zum testen