nur teilweise funktionierendes #include



  • hallo,

    ich habe das Problem das mein Programm an einer Stelle die #include-Anweisung nicht ausführt, denke ich. in 2 Klassen wirds klappts. Bei der 3. nicht.
    Die Variablen sind nicht deklariert kommt als Fehlermeldung

    Die Deklaration der zu inkludierenden Klasse

    //header-datei für kaestchen
    #pragma once
    #include "stdafx.h"
    class kaestchen
    {
    private:
        char zeichen;
      public:
        bool besetzt;
        void setzeichen(int);
        void setzeichen2();
        void setzeichen3(char);
        char getzeichen();
        void setA();
    };
    

    die Klassen wo es klappt

    //header-datei für klassenbasiert2
    
    #pragma once
    #include "targetver.h"
    #include <stdio.h>
    #include <tchar.h>
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <time.h>
    #include "kaestchen.h"
    
    class c_spielfeld2
    {
      private:
        void deleteA2();
        void loeschmaske2();
        int lsgsuchen2();
        void copyarray2(kaestchen,kaestchen);
        int freiesfeldsuchen2();
        void eintragen2(int);
        int gueltig2(int,int &,int &,int &,int &);
      public:
        int ablauf2(kaestchen,c_spielfeld2,int,int,int,int &,int &,int &, int &);
    };
    
    #pragma once
    #include "kaestchen.h"
    
    class c_spielfeld3
    {
      private:
        void deleteA3();
        void loeschmaske3();
        int lsgsuchen3();
        void copyarray3(kaestchen[],kaestchen[]);
        int freiesfeldsuchen3();
        void eintragen3(int);
        int gueltig3(int,int &,int &,int &,int &);
      public:
        int ablauf3(kaestchen[],c_spielfeld3*[],int,int,int,int &,int &,int &, int &);
    
    };
    

    die Klasse wo es nicht klappt

    // tictacto.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    #pragma once
    #include "stdafx.h"
    #include "tictacto.h"
    #include "klassenbasiert2.h"
    #include "klassenbasiert3.h"
    #include "kaestchen.h"
    
    void basis2()
    {
      kaestchen spielfeld[9];
      for(int i=0;i<9;i++)
       {
         spielfeld[i].setzeichen2();
         spielfeld[i].besetzt=false;
       };
       c_spielfeld2 *feld[9];
       int versuch=0;
       for(int i=0;i<9;i++)
       {
         feld[i]=new c_spielfeld2(spielfeld);
       };
       feld[0]->ablauf2(spielfeld,feld,1,0,2,vnr,lsgnrX,lsgnr,lsgnrU);
    };
    

    wäre super wenn da jmd weiss warum es nicht klappt oder wo ich den Fehler machen.

    besten dank scho mal im voraus.



  • Falsches Forum. Korrekt wäre C++.
    Dein Beitrag wird sicher bald verschoben.
    Simon



  • Vielleicht die Include-Reihenfolge. Pack das include mal so weit nach oben, wie möglich.



  • 1. Verwende doch auch bei der Dekl. namen für die Parameter. Das versteht sonst niemand, wenn nur der Header angeguckt wird.
    2. wo ein new ist, muss auch ein delete sein. (oder new[] und delete[]).

    Simon



  • naja ich programmier mit Visual C++

    habs an 2. stelle, nach #include stdafx.h verschoben. hat aber nix gebracht.



  • Certainty schrieb:

    naja ich programmier mit Visual C++

    Ja, und was willst Du damit sagen?

    Zeige uns doch mal die EXAKTE Fehlermeldung.
    Das macht die Sache ein wenig einfacher.
    Simon



  • Certainty schrieb:

    naja ich programmier mit Visual C++

    habs an 2. stelle, nach #include stdafx.h verschoben. hat aber nix gebracht.

    C++/CLI ist ein eigener Begriff, das heißt nicht C++ oder CLI... 😉

    du gehörst eigentlich hier hin:

    http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html



  • fehlermeldung:
    error C2065: 'feld': nichtdeklarierter Bezeichner z:\visual studio 2008\projects\tictacto\tictacto\tictacto.cpp

    error C2227: Links von "->ablauf2" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden. z:\visual studio 2008\projects\tictacto\tictacto\tictacto.cpp

    void basis3()
    {
      kaestchen spielfeld[9];
      for (int i=0;i<9;i++)
      {
        spielfeld[i].setzeichen2();
        spielfeld[i].besetzt=false;
      };
      c_spielfeld3 *feld[9];
      feld[0]=new c_spielfeld3(spielfeld);
      feld[0]->ablauf3(spielfeld,feld,1,0,2,vnr,lsgnrX,lsgnr,lsgnrU);
    };
    

    wo ist der unterschied zu basis2? in basis3 tritt der fehler nicht auf 😕



  • Hinter die schließende Klammer einer for-Schleife muss übrigens kein Semikolon.

    EDIT: Hinter die Klammer einer Funktion/Methode auch nicht...



  • ich nap .
    kaestchen wird ja includiert, fehler ist ja bei: c_spielfeld2 *feld[9]

    also klappt das includieren von "klassenbasiert2.h" nicht. ist im 1.post als codeausschnitt nochmal zu sehn die deklaration.
    muss nicht aber kann. ich find das übersichtlicher.


Anmelden zum Antworten