我有幾個類和IVE一個程序在一個主頭部連接它們放在一起:標識符包括報頭之後使用未定義類
#ifndef __MAIN_H_INCLUDED__
#define __MAIN_H_INCLUDED__
//Using SDL, SDL_image, standard IO, strings, and file streams
#include <SDL.h>
#include <SDL_image.h>
#include <stdio.h>
#include <string>
#include <fstream>
#include "ltexture.h"
#include "tile.h"
#include "player.h"
#include "enemy.h"
#include "egg.h"
我然後有一個鏈接在每個這些頭標對main.h文件。除了當我試圖聲明
class LTexture;
LTexture gTileTexture;
LTexture gPlayerSpriteSheetTexture;
LTexture gEnemySpriteSheetTexture;
LTexture gEggSpriteSheetTexture;
我讓他們每個人都使用一個未定義類「LTexture」一切都連接在一起。我知道即時通訊使用前向聲明和包括在同一時間,但這種方式給了我最少的錯誤,只是使用包含或轉發聲明給了更多的錯誤。在頭文件中聲明這些的原因是因爲它們被用在其他類中。
結構類IM剛剛從lazyfoo的教程
#ifndef __LTEXTURE_H_INCLUDED__
#define __LTEXTURE_H_INCLUDED__
#include "main.h"
class LTexture
{
public:
//Initializes variables
LTexture();
//Deallocates memory
~LTexture();
//Loads image at specified path
bool loadFromFile(std::string path);
//Creates image from font string
bool loadFromRenderedText(std::string textureText, SDL_Color textColor);
//Deallocates texture
void free();
//Set color modulation
void setColor(Uint8 red, Uint8 green, Uint8 blue);
//Set blending
void setBlendMode(SDL_BlendMode blending);
//Set alpha modulation
void setAlpha(Uint8 alpha);
//Renders texture at given point
void render(int x, int y, SDL_Rect* clip = NULL, double angle = 0.0, SDL_Point* center = NULL, SDL_RendererFlip flip = SDL_FLIP_NONE);
//Gets image dimensions
int getWidth();
int getHeight();
private:
//The actual hardware texture
SDL_Texture* mTexture;
//Image dimensions
int mWidth;
int mHeight;
};
#endif
使用爲什麼LTexture不確定的,如果我有它連接到一個工作結構類
我試圖把所有的extern定義在一個CPP什麼我發現它是從那一個cpp中刪除錯誤。所以我把所有的定義分割成了他們需要的特定類,然而他們仍然需要多於一個,並且聲明它們兩次也會導致錯誤。那麼,我如何鏈接標題是一個問題?我設置我的頭文件的方式是每個cpp引用其頭文件,然後頭文件引用main.h.使用main.h引用其他所有頭文件
OT:http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier –
所以是錯誤,因爲額外的__在前面定義語句 – MolerC
不太可能,這只是一句話。你也不能在btw結尾有'__'。 –