我有这个单例的“TextureHandler”类,可以使用此“TextureHandler::getInstance()-> functionName()” 正常工作,但是...我想做的是为制作一个typedef “TxHandler” getInstance()函数,因此我可以像“TxHandler-> functionName()” 一样使用它,但是我遇到了这个错误:是'TxHandler'之前的预期初始化器。
#ifndef TEXTUREHANDLER_H
#define TEXTUREHANDLER_H
#include <SDL.h>
#include <SDL_image.h>
#include <SDL_ttf.h>
#include <iostream>
#include <string>
#include <map>
#include "Defs.h"
// Engine's texture handler class
class TextureHandler
{
// private constructor for singleton
TextureHandler() {}
static TextureHandler* instance;
// textures string map
map<string, SDL_Texture*> tMap;
public:
// getInstance singleton function
static inline TextureHandler* getInstance()
{
if(instance == NULL)
{
// create a pointer to the object
instance = new TextureHandler();
return instance;
}
return instance;
}
bool load(SDL_Renderer* renderer, string id, const char* filename);
bool loadText(SDL_Renderer* renderer, string id, const char* text, TTF_Font* font, SDL_Color color);
void render(SDL_Renderer* renderer, string id, int x, int y, int w=0, int h=0, int center=0, SDL_Rect* clip=NULL, SDL_RendererFlip flip=SDL_FLIP_NONE);
void free(string id);
int getWidth(string id);
int getHeight(string id);
};
// TextureHandler instance typedef
typedef TextureHandler::getInstance() TxHandler;
#endif
最佳答案
typedef
允许您为类型创建别名。您不能使用它来命名该类型的实例。
与所追求的功能最接近的是将TextureHandler::getInstance()
的结果存储在指针中:
TextureHandler* TxHandler = TextureHandler::getInstance();
....
TxHandler->functionName();
关于c++ - C++,Typedef一个静态的getInstance函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28174586/