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.