has not been declared ?

0

Witam. Mam kolejny problem. Mam klasę CScreen, której metodą jest
void GetData(CWalls walls, CSnake Snake, CApple Apple); - i to dla niej zachodzą błędy, które cytuję poniżej.

plik .h

// Class automatically generated by Dev-C++ New Class wizard

#ifndef CSCREEN_H
#define CSCREEN_H

#include "definitions.h"
#include "cwalls.h"
#include "csnake.h"
#include <vector>
#include "spoint.h"
#include <stdio.h>
#include <ctime> 
#include <windows.h>
#include <conio.h>
#include <cstdio>
#include <iostream>
#include "capple.h"

using namespace std;
/*
 * No description
 */
class CScreen
{
	public:
           
           char tab[Width][Height];
		// class constructor
		CScreen();
		// class destructor
		~CScreen();
		//void Draw(CWalls walls);
		void DrawToTheScreen();
		void GetData(CWalls walls);
		void GetData(CSnake Snake);
		void GetData(SPoint Point);
		//void GetData(CApple Apple);
		void GetData(CWalls walls, CSnake Snake, CApple Apple);
};

#endif // CSCREEN_H

plik .cpp

// Class automatically generated by Dev-C++ New Class wizard

#include "cscreen.h" // class's header file
#include <iostream>


// class constructor
CScreen::CScreen()
{
    for(int i = 0;  i<Height; i++)
    {
            for(int j = 0; j <Width; j++)
            {
                  tab[j][i] =' ';
            }
            
            
    }
	tab[ 0 ][Height - 1] ='W'; //test
}


// class destructor
CScreen::~CScreen()
{
	// insert your code here
}



/*void CScreen::Draw(CWalls walls);
{
          for(int i = 0;  i<Length; i++)
    {
            for(int j = 0; j <Height; j++)
            {
                 cout << tab[i][j];
            }
            
    }                
}*/

void CScreen::DrawToTheScreen()
{
     {
	//some function (copied from somewhere) to clear a screen
	//standard system("cls") is too slow for drawing something on the screen
	//I don't know what happens here
	DWORD n;
	DWORD size;
	COORD coord = {0};
	CONSOLE_SCREEN_BUFFER_INFO csbi;
	HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );
	GetConsoleScreenBufferInfo ( h, &csbi );
	size = csbi.dwSize.X * csbi.dwSize.Y;
	FillConsoleOutputCharacter ( h, TEXT ( ' ' ), size, coord, &n );
	GetConsoleScreenBufferInfo ( h, &csbi );
	FillConsoleOutputAttribute ( h, csbi.wAttributes, size, coord, &n );
	SetConsoleCursorPosition ( h, coord );
    }
              for(int j = 0;  j<Height; j++)
    {
            for(int i = 0; i <Width; i++)
            {
                 std::cout << tab[i][j];
                
                 
            }
            std::cout << endl;
    }  
}

void CScreen::GetData(CWalls walls)
{
     for(int i = 0 ; i< walls.GiveLength(); i++)
     {
             tab [walls.GivePoint(i).x] [walls.GivePoint(i).y] = walls.GivePoint(i).c;
             
     }
}

void CScreen::GetData(CSnake Snake)
{
     for(int i = 0; i , i < Snake.TabLenght; ++i)
     {
             GetData(Snake.tab1[i]);
     }
     
     
}


void CScreen::GetData(CWalls walls, CSnake Snake, CApple Apple)
{
     tab [Apple.x] [Apple.y] = Apple.c;
     
          for(int i = 0; i , i < Snake.TabLenght; ++i)
     {
             GetData(Snake.tab1[i]);
     }
     
     
          for(int i = 0 ; i< walls.GiveLength(); i++)
     {
             tab [walls.GivePoint(i).x] [walls.GivePoint(i).y] = walls.GivePoint(i).c;
             
     }
     
}

void CScreen::GetData(SPoint Point)
{
     tab [Point.x] [Point.y] = Point.c;
}
/*
void CScreen::GetData(CApple Apple)
{
     tab [Apple.x] [Apple.y] = Apple.c;
}

*/

A tutaj deklaracja CApple (włączona przez #include "capple.h"). :

// Class automatically generated by Dev-C++ New Class wizard

#ifndef CAPPLE_H
#define CAPPLE_H

#include "spoint.h" // inheriting class's header file
#include "cwalls.h"
#include "csnake.h"
#include "definitions.h"
#include "cscreen.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>



/*
 * No description
 */
class CApple : public SPoint
{
	public:
        
		// class constructor
		CApple();
		// class destructor
		~CApple();
};

#endif // CAPPLE_H

Pomimo tego, program nie kompiluje się poprawnie. Błedy jakie otrzymuję to:

3 C:\makro\cp\snake aktualny\capple.h:10,               from capple.cpp In file included from capple.h:10,               from capple.cpp 
3 C:\makro\cp\snake aktualny\capple.cpp                  from capple.cpp 

38 C:\makro\cp\snake aktualny\cscreen.h `CApple' has not been declared 
38 C:\makro\cp\snake aktualny\cscreen.h ISO C++ forbids declaration of `Apple' with no type 
 C:\makro\cp\snake aktualny\Makefile.win [Build Error]  [capple.o] Error 1 

Sprawdziłem program pod kątem literówk itp, jednakże nic to nie dało.

0

Wiem, że sam sobie odpowiadam, ale chcę zaznaczyć, że rozwiązałem problem :-)
Chodziło o to, że zarówno CApple jak i CScreen wstawiały wzajemnie swoje pliki nagłówkowe. Rozwiązałem problem poprzez ominięcie konieczności użycia SCreen w CApple. Więcej na ten temat można znaleźć na :
http://www.coderscity.net/ftopic30542-0-asc-0.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1