Methode kennt Klasse nicht: error C2065

DerSiebte

Mitglied
Hallo Zusammen

ich habe 1 Dialogfenster(Hauptmenü) indem ein Button (und nochmehr Sachen) ist, wenn ich diesen klicke soll ein neues Fenster(Spielmenü) aufgehen und eine klasse erstellt werden die ich nur in diesem Fenster brauche.

Code:
SpielDlg::SpielDlg(CWnd* pParent /*=NULL*/)
	: CDialog(SpielDlg::IDD, pParent)
{
  Team Teams[5];

}

Die Klasse heisst Teams und jedes Team braucht einen Namen. Denn wollte ich mit einer Funktion hinzufügen aber der Compiler kennt die Klasse nicht.

Code:
void AddTeam(char * TeamArr[5])
{
  for(int i=0;i<5;i++)
  {
    Teams[i].SetName(TeamArr[i]);
  }

}

Fehlercode:
error C2065: 'Teams' : undeclared identifier
error C2228: left of '.SetName' must have class/struct/union

Bin um jede Hilfe dankbar!

Gruss

DerSiebte
 
Hallo Zusammen

ich habe 1 Dialogfenster(Hauptmenü) indem ein Button (und nochmehr Sachen) ist, wenn ich diesen klicke soll ein neues Fenster(Spielmenü) aufgehen und eine klasse erstellt werden
Du meinst ein Objekt einer best. Klasse soll erstellt werden. Eine Klasse ist nur die "Vorlage" zum Erstellen eines Objekts.
Code:
SpielDlg::SpielDlg(CWnd* pParent /*=NULL*/)
	: CDialog(SpielDlg::IDD, pParent)
{
  Team Teams[5];

}
Die Klasse heisst Teams
Nein, die Klasse heißt anscheinend Team und die Variable heißt Teams.

Du hast hier eine lokale Variable innerhalb des Konstruktors angelegt. Der Gültigkeitsbereich dieser Variable ist demnach auch nur der Konstruktorblock.

Um die Variable jedem Objekt der Klasse zuzuordnen, mußt du diese als Attribut der Klasse definieren:
C++:
class SpielDlg {
private:
  Team m_Team[5];

  ...
};
Gruß
 
uups.. :suspekt: sorry meinte objekt ja.

Danke für die schnelle Antwort.
Ich hab das gemacht was du geschrieben hast, aber es kommen noch immer die selben fehler.
Ich nehme an die Methode braucht jetzt objekt der klasse "SpielDlg" kann das sein

gruss
DerSiebte
 
uups.. :suspekt: sorry meinte objekt ja.

Danke für die schnelle Antwort.
Ich hab das gemacht was du geschrieben hast, aber es kommen noch immer die selben fehler.
Ich nehme an die Methode braucht jetzt objekt der klasse "SpielDlg" kann das sein
AddTeam ist aber leider keine Methode, sondern eine Funktion. Es wäre wahrscheinlich sinnvoll dies als Methode der SpielDlg Klasse zu definieren.

Wenn allerdings ein Team auf jeden Fall einen Namen braucht, dann sollte man das auch im Design erzwingen. D.h. ich fände es besser die Namen eines Teams gleich dem Konstruktor zu übergeben.

Gruß
 
sorry mit diesen ausdrücken komm ich noch nicht so zu recht.

Wenn allerdings ein Team auf jeden Fall einen Namen braucht, dann sollte man das auch im Design erzwingen. D.h. ich fände es besser die Namen eines Teams gleich dem Konstruktor zu übergeben.

wie kann ich das machen mit all diesen arrays?

AddTeam ist eine Methode! das SpielDlg:: hat einfach gefehlt.

gruss
 
Zuletzt bearbeitet:
Danke!

Jetzt bekomme ich aber folgende Fehlermeldung:

error C2548: 'SpielDlg::SpielDlg' : missing default parameter for parameter 2

und er zeigt auf diese zeile:

Code:
SpielDlg(CWnd* pParent = NULL,const char* teamName[5]);

was ist ein Default Parameter

gruss
 
Zurück