我正在使用C++進行項目工作,但我本身是Java,並且沒有C++經驗。我遇到的錯誤是Cell和CellRenderer都包含對方,但我不知道如何解決這個問題,因爲他們都使用另一個。如果我刪除了#include,我會得到單元格錯誤,但是如果我保留它,錯誤消失,除了單元格包含它自己。這是我的代碼:包含聲明包括自己
#include <string>
#include <iostream>
#include <allegro5\allegro.h>
#include "Cell.h"
#include "Renderer.h"
using namespace std;
class CellRenderer: public Renderer{
Cell * cell;
ALLEGRO_BITMAP * image;
public:
CellRenderer(Cell * c)
{
cell = c;
image = cell->getImage();
}
void render(int x, int y)
{
al_draw_tinted_scaled_bitmap(image, cell->getColor(),0,0,al_get_bitmap_width(image),al_get_bitmap_height(image),x-cell->getRadius(),y-cell->getRadius(),cell->getRadius()*2,cell->getRadius()*2,0);
}
bool doesRender(int x, int y, int wid, int ht)
{
int cellX = cell->getX();
int cellY = cell->getY();
int radius = cell->getRadius();
return cellX>x-radius&&cellX<x+wid+radius&&cellY>y-radius&&cellY<y+ht+radius;
}
}
class Cell{
public:
bool doesRender(int x, int y, int wid, int ht)
{
return renderer->doesRender(x,y,wid,ht);
}
void render(int x, int y)//renders with center at x,y
{
renderer->render(x,y);
}
};
任何幫助,將不勝感激
你需要包括警衛。 http://stackoverflow.com/questions/8020113/c-include-guards –
他們究竟使用什麼使他們需要包括對方? –
有時可以使用前向聲明將#include指令從頭文件移動到實現文件,但無論如何您需要防範 – alexbuisson